2

私は正規表現に不慣れで、正規表現に苦労しており、問題を次の問題に抽象化しました。

var foo = "abc";
var array1 = match(/abc/);
var array2 = match(/a(b)c/);

array1にはもちろん「abc」のみが含まれますが、array2には「abc」と「b」の両方が含まれます。
array2が「b」も取得するのはなぜですか?これは私にとって問題です。なぜなら、 "{1 2a 3}"のような中括弧内のいくつかのものを、のような正規表現と一致させ/\{(\d(|a|b)\s?)+\}/、結果の配列は空の文字列と "3"、および目的の "{1 2a 3 }"。

ありがとうございました!
アイザック

4

1 に答える 1

1

(?:)の代わりに使用してください()

/{(?:\d(|a|b)\s?)+}/

を使用する場合は()match一致したグループも返します。グループは、にある正規表現の一部に対応する文字列の一部です()

于 2012-06-29T08:46:25.617 に答える