我想在这两个FF和Chrome的JavaScript正则表达式查找/替换被跳过匹配
' 1 2 3 4 5 6 '.replace(/([\s()])(\d+)([\s()])/g, '$1[num $2]$3');
结果我期待下面:
" [num 1] [num 2] [num 3] [num 4] [num 5] [num 6] "
我得到的结果(两个浏览器):
" [num 1] 2 [num 3] 4 [num 5] 6 "
即使简化给出相同的结果:
' 1 2 3 4 5 6 '.replace(/\s(\d+)\s/g, ' [num $1] ');
任何想法发生了什么?
你的解释是伟大的,我现在明白了。问题是JS不支持零宽度lookbehind断言,'\ b'太宽泛,我真的需要空格或parens来匹配数字之前/之后。 – andrew 2013-03-25 22:26:17
是的,我更新了答案。 – OmnipotentEntity 2013-03-25 22:38:27