【发布时间】:2019-07-19 12:25:58
【问题描述】:
在我的 Javascript webapp 中,我使用下面的正则表达式来检测运行良好的 ios/mac 设备。
var regex = \\biP\\w+; CPU(?: iP\\w+)? OS (?:1[2-9][_\\d]+|11_(?:\\d\\d+|[3-9])(?:_\\d+)?) like Mac OS X\\b;
if(navigator.userAgent.match(regex)) {
// do something
}
现在,我想在 IOS 上排除 chrome。所以,我试图在正则表达式下面否定“CriOS”(IOS上的chrome)这个词,但它不起作用。请让我知道我在这里缺少什么。提前致谢
"\\biP\\w+; CPU(?: iP\\w+)? OS (?:1[2-9][_\\d]+|11_(?:\\d\\d+|[3-9])(?:_\\d+)?) like Mac OS X\\b(?:(?!CriOS).)*$"
Iphone Safari 上的 UserAgent
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1"
iPhone Chrome 上的用户代理
“Mozilla/5.0(iPhone;CPU iPhone OS 10_3,如 Mac OS X)AppleWebKit/602.1.50(KHTML,如 Gecko)CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1”
【问题讨论】:
-
你能添加ios/mac设备的例子吗?
-
当然。例如在 Iphone safari 上,用户代理在 Iphone 上将是“Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1” chrome 它将是“Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1”
-
你能测试这段代码
(?!.*CriOS.*$)\\biP\\w+; CPU(?: iP\\w+)? OS (?:1[2-9][_\\d]+|11_(?:\\d\\d+|[3-9])(?:_\\d+)?) like Mac OS X\\b吗?或者只是在你的正则表达式的开头添加这个代码(?!.*CriOS.*$)。 -
那行得通 :) 谢谢易卜拉欣。看来我需要在正则表达式的开头附加那个否定。
-
太棒了!我发表了我的评论作为答案。很高兴它有帮助。
标签: javascript regex