根据以下文档:https://developers.google.com/chrome/mobile/docs/user-agent
以下是适用于iOS UA字符串的Chrome:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3
这是适用于iOS UA字符串的Safari:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3
尽管我可以说出未来的不同,但Chrome会包含“CriOS”。我希望能够区分这两个浏览器,并因此设置使用正则表达式。
使用:
/Gecko\) (?!CriOS)/
我能够做到这一点,但我是偏执狂,因为我不在表达式中包含iPhone(也许这也会在Android上触发等)
我想编写以下正则表达式,在以下情况下返回匹配:
我该怎么做呢?
仅供参考我一直在使用rubular来测试reg exp,这真是太棒了http://rubular.com/
答案 0 :(得分:7)
这应该这样做:
iPhone(?!.*?CriOS)
iPhone
匹配该单词的任何出现。然后它使用iPhone
匹配中的否定前瞻。 .*?CriOS
匹配任何/所有字符,直到找到CriOS
。 (?!expr)
是一个负面的预测。如果表达式为false,那么它之前的内容(Iphone
)将匹配,否则不会。
答案 1 :(得分:1)
有关iPhone Safari字符串的更多详细信息,请尝试:
'Mozilla/(\d+(?:\.?\d+)*) \(([\w\s\;]+?)\) AppleWebKit/(\d+(?:.?\d+)*) \([\w\s\,]*\) Version/(\d+(?:.?\d+)*) Safari/(\d+(?:.?\d+)*)'
现在你可以明显地适应Chrome以及......