Javascript正则表达式拆分

时间:2012-12-05 11:15:02

标签: javascript regex

这是我的字符串

 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)

期望: [“这是一些”,“,这里是”] Reality [“这里有一些”,“&”,“t”,“:”,“o”,“,这里是”,“&”,“r”,“:” ,“e”,“”]

这可能是什么原因?我可以通过在匹配中循环和分割来提取我所需的数组,除此之外是不是有任何捷径?

2 个答案:

答案 0 :(得分:2)

这是因为regex引擎还在结果中包含group值。使用(?:)

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

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

或者根本不需要对其进行分组

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

答案 1 :(得分:1)

您不需要分组或正则表达式中的{1}。使用:

var myRegExp = /\b\s&\w+:\w+\s?\b/g