javascript 文字列内で最初に見つかった数値を取得する

javascript 文字列内で最初に見つかった数値を取得する

javascriptで、文字列内で最初に見つかった数値を取得するサンプルコードを記述してます。正規表現で最初に見つかった位置を取得できる「search」を使用して取得します。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 106.0.5249.103

最初に見つかった数値を取得

文字列内で最初に見つかった数値を取得するには「search」で最初に見つかった位置を取得して、文字列に、そのインデックス番号を指定して取得します。

const str = 'hello723world56';

const index = str.search(/[0-9]/);

// 数値が最初に見つかった位置
console.log(index); // 5

const first = Number(str[index]);

console.log(first); // 7

数値が存在しない場合は「-1」が返り結果が「NaN」になるので、数値変換する前に条件を指定すると回避できます。

const str = 'hello';

const index = str.search(/[0-9]/);

// 数値が最初に見つかった位置
console.log(index); // -1

if (index !== -1) {
  const first = Number(str[index]);
  console.log(first); // 7
}

全角の数値を含む場合は、正規表現を変更して、全角から半角に変更して数値化します。

const str = 'hello8723world56';

const index = str.search(/[0-90-9]/);

// 数値が最初に見つかった位置
console.log(index); // 5

// 全角から半角に変更して数値化
const first = Number(str[index].replace(/[0-9]/g, function(v) {
        return String.fromCharCode(v.charCodeAt(0) - 0xFEE0);
    }));

console.log(first); // 7

サンプルコード

以下は、
「 実行 」ボタンをクリックすると、フォームに入力された値で最初に見つかった数値を取得するサンプルコードとなります。

※cssには「bootstrap material」を使用してます。関数はアロー関数で記述してます。

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <title>mebeeサンプル</title>
  <!-- MDB -->
  <link href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/4.2.0/mdb.min.css" rel="stylesheet" />
</head>

<body>

  <div class="container text-center w-50" style="margin-top:200px">

    <h2><span class="badge badge-danger">結果</span></h2>

    <form>
      <div class="form-group">        
        <input type="text" id="setData">
      </div>
    </form>

    <button type="button" onclick="seachFirstNum()" class="btn btn-danger mt-1">
      取得
    </button>

  </div>

  <script>    

    const seachFirstNum = () => {

      let obj = document.getElementsByClassName("badge")[0];

      obj.textContent = Number(setData.value[setData.value.search(/[0-9]/)]);

    }

  </script>
</body>

</html>

取得されていることが確認できます。