職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

JS--文字列の規制表現のマッチテスト

2024年04月07日 | JavaScript
文字列が正規表現とマッチするかテストする

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

【testメソッドの使い方】
RegExp オブジェクトの test メソッドは、対象となる文字列が正規表現とマッチするかどうかをテストし結果として論理値を返します。

・書式
正規表現オブジェクト.test(文字列)

引数に指定した文字列が少なくとも一つ正規表現とマッチした場合は true を返します。マッチしなかった場合は false を返します。

サンプル

let regexp = /ball/;
let str1 = 'Go to see a baseball game';
let str2 = 'Make a cake tomorrow';

console.log(regexp.test(str1));実行> true

console.log(regexp.test(str2));実行
> false

正規表現は 'ball' とマッチするパターンです。一つ目の文字列には 'ball' が含まれているので正規表現とマッチします。よって test メソッドは true を返します。

サンプル2

let regexp = /a.e/;
let str1 = 'Go to see a baseball game';
let str2 = 'Make a cake tomorrow';

console.log(regexp.test(str1));実行
> true

console.log(regexp.test(str2));実行
> true

パターンの中でドット(.)が記述された場合は特別な意味を持ち、任意の一文字とマッチします。その為、今回の正規表現は 'a' で始まり任意の一文字が続き、最後に 'e' で終わる文字列とマッチするパターンです。

【グローバルフラグが設定されている】

パターンの最後に g を記述するとグローバルフラグを設定することができます。

/パターン/g

正規表現にグローバルフラグが設定されている場合、 test メソッドを実行し文字列が正規表現にマッチすると、正規表現オブジェクトの lastIndex プロパティの値がマッチした文字列の次の文字のインデックスに設定されます。(グローバルフラグが設定されていない場合は、 test メソッドでマッチしたとしても lastIndex は 0 のままです)。

サンプル

let regexp = /ball/g;
let str = 'baseball and football';

console.log(regexp.test(str));
>> true
console.log(regexp.lastIndex);
>> 8
再び
 test メソッドを実行すると、現在の lastIndex が示す文字列の位置から文字列が正規表現にマッチするのかをテストします。再びマッチした場合は、改めて lastIndex プロパティの値が更新されます。
console.log(regexp.test(str));
>> true
console.log(regexp.lastIndex);
>> 21


サンプル2
test メソッドを実行したときに正規表現にマッチしなかった場合には lastIndex は 0 に戻ります。

let regexp = /ball/g;
let str = 'baseball and football';

while (regexp.test(str)){
  console.log("lastIndex = " + regexp.lastIndex);
}
console.log("lastIndex = " + regexp.lastIndex);

>> lastIndex = 8
>> lastIndex = 21
>> lastIndex = 0

このようにグローバルフラグを設定することで、同じ文字列に対して正規表現が複数回マッチするかどうかテストすることができます。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« JS--エスケープ処理 | トップ | JS--正規表現にマッチした文... »
最新の画像もっと見る

コメントを投稿

JavaScript」カテゴリの最新記事