2

我需要匹配 Safari 浏览器,而不是使用一个正则表达式的 Chrome 浏览器。我通常对正则表达式没有问题,但消极的前瞻让我很困惑。

/(?!chrome)(safari)/i.test("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5");

无法弄清楚为什么会返回true

4

1 回答 1

5

这会做到的

^(?!.*chrome).*(safari)

BTW JavaScript 不支持lookbehind,但我认为lookahead 没有问题。

你在说什么

(?!chrome)(safari)

是不是在“safari”之前(零宽度,所以从 s 之前的光标开始)不能有没有意义的字符串“chrome”。

于 2012-06-19T20:53:18.113 回答