【開発環境】
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
このようにグローバルフラグを設定することで、同じ文字列に対して正規表現が複数回マッチするかどうかテストすることができます。