匹配不以 &. 开头的字词

Match words not beginning with &

本文关键字:开头 字词 amp      更新时间:2023-09-26

我需要一个可以匹配不以 & 字符开头的单词(不区分大小写)的正则表达式

例如搜索字符串 Foo

然后匹配将是这样的:

  • 噗��
  • 酒吧
  • 酒吧
  • 酒吧
  • 酒吧
  • $Foo酒吧
  • $
  • $
  • Foo $Foo %Foo &Foo Foo

使用如下所示的否定后看断言,

(?i)(?<!&)foo

解释:

  • (?i) 不区分大小写的修饰符。
  • (?<!&) 负面回头断言比赛之前将出现任何但不是&特征。
  • foo匹配字符串 foo

演示

对于 js,

/(?:[^&]|^)(foo)/igm

从组索引 1 中获取所需的字符串。

演示

> var s = "Foo $Foo %Foo &Foo Foo";
undefined
> var re = /(?:[^&]|^)(foo)/igm;
undefined
> var m;
undefined
> while ((m = re.exec(s)) != null) {
... console.log(m[1]);
... }
Foo
Foo
Foo
Foo

通过string.replace方法。

> var s = "Foo $Foo %Foo &Foo Foo";
undefined
> s.replace(/([^&]|^)(foo)/igm, "$1bar")
'bar $bar %bar &Foo bar'

对于模式来说,这应该是Javascript友好的。它使用非捕获组,并确保foo前面没有与号 (&)

(?:[^&])[fF][oO][oO]

非 foo 字符将显示在匹配中,但不显示在结果/捕获中。

编辑:您可以在javascript正则表达式语法中使用"i"标志来调用不区分大小写的模式modiefer。那么模式就会(?:[^&])foo