JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列から数値を抽出する方法をわかりやすく解説

JavaScriptを使えば、文字列の中から1つでも複数でも、数値を簡単に取り出すことができます。この記事では、match()メソッドと正規表現を使った具体的な方法を解説します。

たとえば、文章の中に含まれる数字だけを抜き出したい場面はよくありますよね。そんなときに便利なのが、JavaScriptのmatch()メソッドです。

文字列から1つの数値を抽出する

まずは基本となる例を見てみましょう。次のコードでは、1つの数値(1995)を含む文字列を変数stringWithOneNumberに代入しています。

const stringWithOneNumber = "JavaScript was invented in 1995 by Brendan Eich";

この変数に対してmatch()メソッドを呼び出し、引数として\d+を渡します。つまり、match(/\d+/)のように記述します。

stringWithOneNumber.match(/\d+/);

ポイント: \d+は正規表現(RegEx)のメタ文字で、「1桁以上の数字にマッチする」という意味を持っています。+が付くことで、連続した数字全体をひとまとまりとして捉えてくれるのです。

それでは、結果を出力して確認してみましょう。

console.log(stringWithOneNumber.match(/\d+/));
// ["1995"]

無事に1995だけを抽出できました!

文字列から複数の数値を抽出する

では、文字列の中に2つ以上の数値が含まれている場合はどうすればよいのでしょうか?

これも簡単です。match()メソッドの引数に、グローバル検索を意味するgフラグを追加するだけです。先ほどの例を少し変更して、今度は2つの数値を含む文字列を使ってみましょう。

const stringWithMultipleNumbers =
  "JavaScript was invented in 1995 by Brendan Eich, and is still used in 2020";

続いて、match()メソッドに\d+gフラグを組み合わせて指定します。

stringWithMultipleNumbers.match(/\d+/g);

結果を出力してみます。

console.log(stringWithMultipleNumbers.match(/\d+/g));
// ["1995", "2020"]

このように、gフラグを付けることで、文字列内のすべての数値を配列として一度に取得できます。

まとめ

  • 文字列から数値を抽出するにはmatch(/\d+/)を使用する
  • \d+は「1桁以上の連続した数字」にマッチする正規表現
  • 複数の数値を取得したい場合はgフラグを追加してmatch(/\d+/g)とする

正規表現とmatch()メソッドを組み合わせれば、データの前処理やバリデーションなど、さまざまな場面で活用できます。ぜひ実際のコードで試してみてください。

  1. JavaScriptの配列を文字列に変換する方法【toString()の使い方を解説】

    JavaScriptで配列の要素をひとつの文字列として扱いたい場面はよくあります。そんなときに便利なのがtoString()メソッドです。このメソッドを使うと、配列の各要素がカンマ(,)で区切られたひとつの文字列に変換されます。以下は、ボタンをクリックすると配列の中身が文字列として画面に表示されるシンプルなサンプルコードです。サンプルコード<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-

  2. Pythonの正規表現で文字列からデータを抽出する方法

    Pythonでは、標準ライブラリのreモジュールを使って正規表現による文字列処理が行えます。パターン内で()によるグループ化を利用すると、「first_id」「second_id」「category」のような複数のデータを1つの文字列から簡単に取り出すことができます。コード例以下のコードは、ファイル名「TS001B01.JPG」から各部分を抽出する例です。import re s = TS001B01.JPG match = re.match(r(TS\d+)([A|B])(\d+)\.JPG, s) first_id = match.group(1) category = match.gr