一尘不染

如何在JavaScript中反转正则表达式?

javascript

我有一个字符串A,想测试另一个字符串B是否不属于其中。这是一个非常简单的正则表达式,其结果随后可以反转。

我可以做:

/foobar/.test('foobar@bar.de')

然后将其反转,如下所示:

!(/foobar/).test('foobar@bar.de')

我的问题是,我需要在正则表达式中执行此操作,而不要使用它们的结果。就像是:

/!foobar/.test('foobar@bar.de')

(不起作用)

换句话说:正则表达式应该测试是否存在,并在这种情况下返回true。

JavaScript有可能吗?


阅读 524

收藏
2020-05-01

共1个答案

一尘不染

尝试:

/^(?!.*foobar)/.test('foobar@bar.de')

(简短)说明:

^          # start of the string 
(?!        # start negative look-ahead
  .*       # zero or more characters of any kind (except line terminators)
  foobar   # foobar
)          # end negative look-ahead

因此,用简单的英语来说,如果可以“看到”字符串“foobar”,则该正则表达式将从字符串开头开始查找。如果可以“看到”,则 没有 *匹配项。

*没有匹配项,因为它是 负面 的超前预测!

2020-05-01