2015-05-18 2 views
1

Мне нужно совместить UA, если он содержит Mobile, но не Android. Я пробовал сRegex: сопоставлять пользовательские агенты, не связанные с андроидом

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

Но это не всегда работает.

Кроме того, как я могу исключить как «Windows», так и «Android»? (Учитывая, что Windows, фальсифицирует себя как Android и iPhone ...)

Edit: несколько тестовых строк (андроид, iphone, сор, другие):

Mozilla/5.0 (Linux; Android 4.1.2; GT-I8190N Сложение/JZO54K) AppleWebKit/537,36 (KHTML, как 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, например, Gecko) Версия/7.0 Mobile/11D167 Safari/9537.53

Mozilla/5.0 (Мобильный; Windows Phone 8.1; Android 4.0; РУКА; Trident/7.0; Touch; с.в.: 11,0; IEMobile/11,0; NOKIA; 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 Радж:

Все мобильные телефоны:

^(?:.*(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

Просьба представить тестовую строку (ПА) вы не хотите, чтобы соответствовать (и такое вы хотите матч) и, пожалуйста, улучшить описание "не всегда работает" –

ответ

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

Смежные вопросы