我正在寻找匹配/(?=\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/

    10-10 06:30