我想在這兩個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