acm*_*cme 44 javascript regex invert
我有一个字符串A,并想测试另一个字符串B是否不是它的一部分.这是一个非常简单的正则表达式,其结果可以在之后反转.
我可以:
/foobar/.test('foobar@bar.de')
Run Code Online (Sandbox Code Playgroud)
之后将其反转,如下所示:
!(/foobar/).test('foobar@bar.de')
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我需要在正则表达式中进行,而不是使用结果.就像是:
/!foobar/.test('foobar@bar.de')
Run Code Online (Sandbox Code Playgroud)
(哪个不起作用)
换句话说:正则表达式应该测试不存在,并在这种情况下返回true.
这可以用JavaScript吗?
Bar*_*ers 63
尝试:
/^(?!.*foobar)/.test('foobar@bar.de')
Run Code Online (Sandbox Code Playgroud)
(简短)解释:
^ # start of the string
(?! # start negative look-ahead
.* # zero or more characters of any kind (except line terminators)
foobar # foobar
) # end negative look-ahead
Run Code Online (Sandbox Code Playgroud)
因此,用简单的英语,如果字符串'foobar'可以被"看到",那么正则表达式将从字符串的开头看.如果可以"看到"则没有*匹配.
*没有比赛,因为它是负面的前瞻!
更多关于这个前瞻性的东西:http://www.regular-expressions.info/lookaround.html但请注意,JavaScript只支持先行,没有后顾之忧!
小智 9
^(?!.*(word1|word2|word3))
Run Code Online (Sandbox Code Playgroud)
将匹配不包含任何word1、word2、 或 的字符串word3(并且您可以无限期地扩展列表)。但这也匹配空字符串。要拒绝空值,请使用
^(?!$)(?!.*(word1|word2|word3))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41891 次 |
| 最近记录: |