匹配字词不以&开头,
我需要一个正则表达式,它可以匹配不以&字符开头的单词(不区分大小写)
例如搜索字符串Foo
然后比赛会是这样的:
使用如下所示的负向后置断言,
(?i)(?<!&)foo
说明:
(?i)
不区分大小写的修饰符。 (?<!&)
否定向后观点声明匹配会在任何之前,而不是在&
字符之前。 foo
匹配字符串foo DEMO
对于js,
/(?:[^&]|^)(foo)/igm
从组索引1获取所需的字符串。
DEMO
> 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]
不是与符号的非富语符将显示在匹配中,但不显示在结果/捕捉中。
编辑:您可以在您的JavaScript正则表达式语法中使用'我'标志来调用不区分大小写模式的modiefer。 那么这个模式就是(?:[^&])foo
上一篇: Match words not beginning with &
下一篇: find specific string but not when present in certain sentence