我需要一个能够匹配不以&开头的单词(不区分大小写)的正则表达式字符
例如搜索字符串 Foo
然后匹配就像:
答案 0 :(得分:2)
使用下面的负面后瞻断言,
(?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'
答案 1 :(得分:1)
对于模式,这应该是Javascript友好的。它使用非捕获组,并确保foo
之前没有&符号(&amp;)
(?:[^&])[fF][oO][oO]
非&符号的非foo字符将显示在匹配中,但不显示在结果/捕获中。
编辑:您可以在javascript正则表达式语法中使用“i”标志来调用不区分大小写的模式modiefer。那么模式就是(?:[^&])foo