JS 正規表現における test、exec、match メソッドの違いの説明
test
test は、対応する文字列にパターンが存在するかどうかを調べるブール値を返します。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)) // true
exec
exec は、現在の一致結果を検索して配列として返します。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);
パターンが存在しない場合の場合、arr は null になります。それ以外の場合、arr は常に長さ 1 の配列であり、その値は現在一致するものになります。 arr には 3 つの属性もあります。index は現在の一致の位置、lastIndex は現在の一致の終了位置 (index は現在の一致の長さ)、上の例では、input は str です。
exec メソッドはパラメータ g の影響を受けます。 g を指定すると、次回 exec が呼び出されたときに、最後に一致した lastIndex から検索が開始されます。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg .exec(str)[0]);
上記の 2 つの出力は両方とも 1a です。ここで、指定されたパラメータ g を見てみましょう:
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0 ]);
alert(reg.exec(str)[0]);
上記の最初のものは 1a を出力し、2 つ目は 1b を出力します。
match
match は String オブジェクトのメソッドです。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));
match このメソッドは少し複雑ですexec と似ていますが、 exec は RegExp オブジェクトのメソッドであり、 math は String オブジェクトのメソッドです。 2 つの間のもう 1 つの違いは、パラメーター g の解釈です。
パラメータ g が指定されている場合、match はすべての結果を一度に返します。
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str .match(reg)); // この文の結果は前の文と同じです
この結果は 3 つの要素を持つ配列です: 1a、1b、1c。
正規表現は JavaScript でよく使用されます。Match と Test の 2 つの関数は正規表現でよく使用されます。もちろん Exec の違いを区別するためにコード例を使用します。
一致例
出力
---------------------------------
A 1
B 2
C 3
D 4
E 5
a 27
b 28
c 29
d 30
e 31
出力
---------------------------------
abb 3
ab 9