JavaScript RegExp クラス

RegExp オブジェクトの作成

JavaScript の正規表現は RegExp オブジェクトで表されます。

RegExp(pattern [, flags] ) コンストラクタは正規表現のパターンとフラグを受け取り、RegExp オブジェクトを作成します。

const r = new RegExp('\\d+')
console.log(r.test('A123 XYZ')) // true

new RegExp() で RegExp オブジェクトを作成する箇所は / でパターンを囲むことで簡単に記述できます。

const r = /\d+/

RegExp コンストラクタに渡す文字列中では、バックスラッシュはエスケープが必要です。

RegExp() コンストラクタの第二引数に渡すフラグは文字列で指定します。一度に複数指定することも可能です。

const r = new RegExp('java', 'gi')
for (let m of 'Java Python javascript'.matchAll(r)) {
  console.log(`${m.index} : ${m[0]}`)
}
// 0 : Java
// 12 : java

/ を使って RegExp オブジェクトを作成するときは、フラグは後ろの / に続けて記載します。

const r = /java/gi

test() 文字列がパターンにマッチするか判定

RegExp オブジェクトの test() メソッドは引数に文字列を受け取り、 引数の文字列がパターンにマッチすれば true を、マッチしなければ false を返します。

const r = /\d+/
console.log(r.test('A123 XYZ')) // true

exec() パターンマッチングを実施

RegExp オブジェクトの exec() メソッドは引数に文字列を受け取り、 引数の文字列がパターンにマッチすればマッチの結果を返し、マッチしなければ null を返します。

マッチの結果は配列であり、要素 0 にマッチした箇所がセットされます。

また、 g フラグまたは y フラグでステートフルなパターンマッチングを行います。 RegExp オブジェクトの lastIndex プロパティにセットされた場所からパターンマッチを実施し、マッチすれば lastIndex をマッチした末尾にセットします。

const r = /\d{1,4}/g
const s = 'AB123X98'
let i = 1
let m = r.exec(s)
while (m) {
  console.log(`${i++}: ${m[0]} (${r.lastIndex})`)
  m = r.exec(s)
}
// 1: 123 (5)
// 2: 98 (8)

これにより、テストする文字列を先頭から順番にマッチを実施できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 JavaScript 入門