我正在寻找匹配/(?=\W)(gimme)(?=\W)/gi
或类似的东西。 \W
应该是零宽度字符,用于包围我的实际比赛。
也许有一些背景。我想用某些文字填充替换某些单词(总是\w+
),但前提是它不被\w
包围。 (这听起来像是负面的环顾四周,但我听说JS没有做到这些!!)
(顺便说一句:上面的“gimme”是我要替换的字面量。如果不是很明显。)
它必须是一种环顾四周,因为\W
必须为零宽度,因为意图是.replace(...)
,而我无法替换/复制周围的字符。
所以这行不通:
text.replace(/(?=\W)(gimme)(?=\W)/gi, function(l, match, r) {
return l + doMagic(match) + r;
})
零宽度字符必须被忽略,因此该函数只能返回(并替换)
doMagic(match)
。我只有非常有限的环视经验,而在JS中却没有。谢谢
PS。或者,也许我需要回溯一下,而JS中不支持这些。我糊涂了?
PS。上下文:http://jsfiddle.net/rudiedirkx/kMs2N/show/(哦,链接!)
最佳答案
\b
断言这是您要匹配的整个单词。 /(\s+gimme)(?=\W)/gi
并替换为
[yourReplacement]
-即在'gimme'之前捕获空白,然后在替换中添加一个空白。gimme
文字之前和之后捕获更多字符,然后使用具有反向引用的组:(\W+?)gimme(\W+?)
-您的匹配-请注意,这次之前和之后字符在捕获组1和2中而且您想使用
\1[yourReplacement]\2
作为替换字符串-不确定如何在JS中使用向后引用,但是这样做的目的是告诉引擎,对于\1
,您要指的是第一个捕获括号所匹配的内容。在某些语言中,可以使用$1
访问这些语言。关于javascript - Javascript中特定的正则表达式正面外观(前后|前后),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10954048/