【问题标题】:Regular expression to negate chrome on IOS devices在 IOS 设备上否定 chrome 的正则表达式
【发布时间】: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


【解决方案1】:

尝试在代码开头添加否定 (?!.*CriOS)

例子:

(?!.*CriOS)\\biP\\w+; CPU(?: iP\\w+)? OS (?:1[2-9][_\\d]+|11_(?:\\d\\d+|[3-9])(?:_\\d+)?) like Mac OS X\\b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多