1

フラグ無視の場合のコードサンプルを次に示します。私は1試合しか受け取らないと期待されていました。

var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/i);

結果

a=[サンプル][am][p]

私は=[サンプル]を持っていると期待されていました

gでiフラグを変更した場合

var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/g);

驚き(少なくとも私にとっては)結果には1つの要素しかありません

a=[サンプル]

4

2 に答える 2

2

gjavascript regex APIは、 -flagに応じてあらゆる種類の魔法を実行するため、非常に直感的ではありません。

私はどのよう.matchに振る舞うかをカバーするつもりです:

  • -flagがないg場合.matchは、完全一致の配列とすべてのキャプチャグループが返され、一致nullしない場合は返されます。

  • -flagをg使用.matchすると、すべての完全一致の配列が返され、キャプチャグループは違いを生じません。null一致するものがない場合。

于 2012-08-07T15:02:54.300 に答える
0
a = str.match(/S(am)(p)/i);

最初に一致した文字列、$ 1$2を返します

a = str.match(/ S(am)(p)/ g);

一致した配列を返します(ここでは1つのみ)

文字列がそのようにデカールされている場合

var str = "Sample text Sample text";

/ g return Samp Samp、正規表現が次のよう/S(.m)(p)/gになり、文字列が次のようになる場合に便利です"Sample text Simple text";

于 2012-08-07T15:00:36.970 に答える