为了区分用户代理Mobile和用户代理平板电脑,我写了这样的正则表达式:
对于手机:
.+iPhone.+|.+Android.+Mobile.+
对于平板电脑:
.+iPad.+Mobile.+|.+Android.+[^Mobile].+
尝试使用平板电脑的这些用户代理:
Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53
- > OK平板电脑
Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Safari/537.36
- > OK平板电脑
Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
- > OKTablet,这不是平板电脑......
最后一个被认为与其他人一样,但这是移动设备的用户代理,这不是我想要的......
我需要用一种模式来编写我的正则表达式,该模式考虑到有效的用户代理字符串包含Android但严格不包含" Mobile"
有人在想什么?谢谢!答案 0 :(得分:1)
此正则表达式适用于您识别平板电脑:
.+(?:iPad.+Mobile|Android(?!.+Mobile)).+
负字符类,即[^Mobile]
并不意味着不是Mobile
。它只是否定了个别角色。因此[^Mobile]
将匹配[...]
内不属于这些字符的单个字符。