0

これは私の文字列です

 var str = "Here is some &text:also , here is &another:one"
 var myRegExp = /\b\s(\&){1}(\w)+(\:){1}(\w)+\s?\b/g
 str.match(myRegExp)
 //[" &text:also", " &another:one"]

これまで期待どおりに機能しますが、問題は分割にあります

str.split(myRegExp)

期待: ["ここにいくつか"、 "、ここに"]
現実["ここにいくつか"、 "&"、 "t"、 ":"、 "o"、 "、ここに"、 "&"、 " r "、": "、" e "、" "]

これの理由は何でしょうか?マッチでループして分割することで必要な配列を抽出できますが、それ以外のショートカットはありませんか?

4

2 に答える 2

2

これは、regexエンジンが結果にgroup値も含めているためです。(?:)

したがって、分割する正規表現は次のようになります。

/\b\s(?:\&){1}(?:\w)+(?:\:){1}(?:\w)+\s?\b/g

または、グループ化する必要はまったくありません

/\b\s\&{1}\w+\:{1}\w+\s?\b/g
于 2012-12-05T11:19:22.713 に答える
1

{1}正規表現内のグループ化やは必要ありません。使用する:

var myRegExp = /\b\s&\w+:\w+\s?\b/g
于 2012-12-05T11:26:07.470 に答える