我需要一个RegEx来替换长字符串中以单个:开头但不是以\:开头的单词。

匹配::Amazing

没有匹配项:\:Amazing

我尝试了[^\\](:Amazing),但它也匹配了x:Amazing

我要替换字符串Hello, this is :Amazing and also \:Amazing

Hello, this is COOL and also :Amazing

谢谢。

最佳答案

您是说:之后不需要任何字符。您需要对此具有否定的后顾之忧:

:(?<!\S.)Amazing



\S表示非空白字符


注意:这在PHP PCRE中有效

Live demo

JavaScript不支持回溯功能(目前仅支持Google Chrome)。要在JS中也有它,您需要这样的东西:



var str = `Hello, this is :Amazing and also \\:Amazing x:Amazing`;
console.log(str.replace(/(^|\s):Amazing/g, "$1COOL"));

10-08 18:40