【发布时间】:2012-06-21 23:29:03
【问题描述】:
我需要匹配 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。
【问题讨论】:
-
您匹配的子字符串
safari不等于chrome。 (如果我理解正确的话,意义不大。) -
嗯,我可能误解了用法。我试图让字符串匹配 safari,但前提是字符串与 chrome 不匹配。
-
Negative lookahead:
q(?!u)匹配一个 not 的q,后跟一个u。这在这里无济于事。您实际上需要对这项工作进行否定的后视(字符串包含Safari,前面没有Chrome),但 JS 不支持否定的后视。
标签: javascript regex regex-lookarounds