根据以下文档:https://developers.google.com/chrome/mobile/docs/user-agent
这是适用于 iOS 的 Chrome UA 字符串:
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
据我所知, future 的不同之处在于 Chrome 包含“CriOS”。我希望能够区分这两种浏览器,因此着手使用正则表达式来区分。
使用:
/Gecko\) (?!CriOS)/
我能够做到这一点,但我很偏执,因为我没有在表达式中包括 iPhone(也许这也会在 Android 等上触发)
我想编写以下正则表达式,在以下情况下返回匹配项:
- 字符串中包含“iPhone”
- 字符串中不包含“CriOS”
我该怎么做?
仅供引用,我一直在使用 rubular 来测试 reg exp,它非常棒 http://rubular.com/
最佳答案
应该这样做:
iPhone(?!.*?CriOS)
iPhone
匹配该词的任何出现。然后它使用来自 iPhone
匹配项的否定前瞻。 .*?CriOS
匹配任何/所有字符,直到找到 CriOS
。 (?!expr)
是一个否定的先行。如果表达式为假,那么它之前的内容 (Iphone
) 将匹配,否则不会匹配。
关于ruby-on-rails - ruby 正则表达式 : distinguishing between iOS Safari & iOS Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528253/