2012-04-05 11 views
1

私が考えていた...Regex Groupが返されているのはなぜですか?

イム書き込み(JS)は

var t="1234ABC4321".match(/.*(ABC).*/) 

それが返されます。

["1234ABC4321", "ABC"] 

は私がしかし(?:...)

、グループによって, "ABC"]部品を交換することができますはbackreferenceですので、後で\1で参照できます。

質問:

なぜマッチの一部として「ABC」が返されますか? 後で参照するために彼がそれを必要とする場合は、fine!しかしはいらない私のコレクションに保管してください!

ロジックは何ですか(私はそこにいると確信しています)?

答えて

2

ロジックは、文字列が正規表現と一致するかどうかをmatch()メソッドがチェックするというものです。そうであれば、正規表現と一致する文字列の部分を返します。 ()でグループ化を指定すると、グループも返されます。

あなたは、あなたの文字列の使用からABCを取り除くために探している場合:

var t="1234ABC4321".replace(/ABC/, ""); 
3

私はあなたの質問を理解しているかどうかはわかりませんが、グループ化すると、最初に得られるグループは正規表現にマッチした文字列全体になります。セカンダリグループ(ABC)を取得したくない場合は、正規表現のグループを示すので、角括弧(())を削除してください。この正規表現は、であるため、1グループは1234ABC4321になります。

関連する問題