【问题标题】:Regex: match non-android mobile user agents正则表达式:匹配非安卓移动用户代理
【发布时间】:2015-07-29 15:22:51
【问题描述】:

如果 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 构建/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36

Mozilla/5.0(iPhone;CPU iPhone OS 7_1 像 Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53

Mozilla/5.0(移动;Windows Phone 8.1;Android 4.0;ARM;Trident/7.0; 触碰;房车:11.0; IEMobile/11.0;诺基亚; Lumia 930) 喜欢 iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like 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 移动版

感谢@Avinash Raj:

所有手机:

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

仅限 iOS:

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

仅限安卓:

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

除了 Android 和 iOS:

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

【问题讨论】:

  • 请提供您不想匹配的测试字符串(用户代理)(以及您想要匹配的),并请改进“并不总是有效”的描述

标签: regex


【解决方案1】:

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

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

DEMO

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

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多