匹配以:字符开头但不以\开头的字符串:

时间:2018-04-28 14:55:39

标签: javascript php regex

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

匹配::Amazing

不匹配:\:Amazing

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

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

Hello, this is COOL and also :Amazing

谢谢。

1 个答案:

答案 0 :(得分:1)

你告诉:之后你不需要任何角色。你需要一个负面的后视:

:(?<!\S.)Amazing
  • \S表示非空白字符

注意:这适用于PHP PCRE

Live demo

JavaScript不支持lookbehinds(目前只支持Google Chrome)。要在JS中使用它,你需要这样的东西:

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