这是我的字符串
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”,“”]
这可能是什么原因?我可以通过在匹配中循环和分割来提取我所需的数组,除此之外是不是有任何捷径?
答案 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