这是我的弦

 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“,”“]

这可能是什么原因?我可以通过循环并在比赛中进行拆分来提取所需的数组,除此之外没有捷径可走吗?

最佳答案

这是因为regex引擎还将group值也包含在结果中。

所以要分割的正则表达式是

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


或根本不需要将其分组

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

07-24 20:54