正则表达式:匹配非Android移动用户代理

时间:2015-05-18 07:55:43

标签: regex

如果UA包含Mobile而不是Android,我需要匹配UA。我试过

Windows Phone|WPDesktop|BlackBerry|Opera Mini|Opera Mobi|Silk\/|Kindle|(?!.*Android).*Mobile.*|SymbianOS

但它并不总是奏效。

另外,如何排除“Windows”和“Android”? (考虑到Windows假装自己是Android和iPhone ......)

编辑:一些测试字符串(android,iphone,wp,其他):

  

Mozilla / 5.0(Linux; Android 4.1.2; GT-I8190N Build / JZO54K)   AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 28.0.1500.94 Mobile   Safari浏览器/ 537.36

     

Mozilla / 5.0(iPhone;像Mac OS X一样的CPU iPhone OS 7_1)   AppleWebKit / 537.51.2(KHTML,与Gecko一样)Version / 7.0 Mobile / 11D167   Safari浏览器/ 9537.53

     

Mozilla / 5.0(移动版; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0;   触摸; RV:11.0; IEMobile / 11.0;诺基亚; Lumia 930)喜欢iPhone OS 7_0_3   Mac OS X AppleWebKit / 537(KHTML,如Gecko)Mobile Safari / 537

     

UCWEB / 2.0(Symbian; U; S60 V5; en-US; Nokia700)U2 / 1.0.0   UCBrowser / 9.2.0.336 U2 / 1.0.0 Mobile

感谢@Avinash Raj:

所有手机:

^(?:.*(Mobile|Android|iPhone|Windows Phone|WPDesktop|RIM|BlackBerry|Opera Mini|Opera Mobi|Silk\/|Kindle|Symbian).*)$

仅限iOS:

^(?:(?!.*?(?:Windows|Android)).*?iPhone.*)$

仅限Android:

^(?:(?!.*?(?:Windows)).*?Android.*)$

Android和iOS之外的所有内容:

^(?:.*Windows Phone.*|.*WPDesktop.*|.*RIM.*|.*BlackBerry.*|.*Opera Mini.*|.*Opera Mobi.*|.*Silk\/.*|.*Kindle.*|(?!.*?(?:iPhone|Android)).*?Mobile.*|.*Symbian.*)$

1 个答案:

答案 0 :(得分:1)

您可以尝试下面的正则表达式。

^(?:Windows Phone|WPDesktop|BlackBerry|Opera Mini|Opera Mobi|Silk\/|Kindle|(?!.*?(?:Windows|Android)).*?Mobile.*|SymbianOS)$

DEMO

OR

\b(?:Windows Phone|WPDesktop|BlackBerry|Opera Mini|Opera Mobi|Silk\/|Kindle|(?!.*?(?:Windows|Android)).*+Mobile.*+|SymbianOS)\b

DEMO