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”,“,这里是”,“&”,“回覆”, ””]

这可能是什么原因?我可以通过在匹配项上循环和拆分来提取我需要的数组,除此之外没有任何捷径吗?

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 回答