Изменить регулярное выражение для возврата 2 значений вместо 3 из userAgent String - PullRequest
0 голосов
/ 30 апреля 2010

Я взял регулярное выражение из jQuery, чтобы определить, является ли механизм браузера WebKit и получает ли он номер версии, он возвращает 3 значения, извлеченных из строки userAgent: webkit /….…, Webkit и….… [ «….…» - номер версии].

Я бы хотел, чтобы регулярное выражение возвращало только 2 значения: webkit и….….

Я мусор в регулярных выражениях, поэтому, пожалуйста, не могли бы вы дать объяснение выражению с вашим ответом.

Регулярное выражение, с которым я сейчас работаю и которое хочу улучшить: <code>/(webkit)[\/]([\w.]+)/.

С Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 это регулярное выражение вернет: webkit/525.13,webkit,525.13. Я бы хотел, чтобы он только вернулся webkit,525.13.

Я ценю вашу помощь, заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 апреля 2010

В регулярных выражениях возвращаемые значения - это те, которые указаны в скобках:

/([a-z]+)-#(\d+)/.exec("abc-#123")

// ["abc-#123", "abc", "123"]

Вы можете просто сделать группы несоответствующими, добавив ?: в начале:

/(?:[a-z]+)-#(\d+)/.exec("abc-#123")

// ["abc-#123", "123"]

Изменить после перечитывания вашего вопроса.

Возвращаемое выражение из регулярного выражения будет содержать (как показано в моих примерах выше) всю совпадающую строку, а затем соответствующие группы. Если вам нужны только подходящие группы, просто отрежьте первое значение:

myRegex.exec(userAgent).slice(1);

// ["webkit", "525.13"]   <-- note that this is an array
0 голосов
/ 30 апреля 2010

Подол, если вы используете jQuery, для этого предложения есть встроенный метод, который дает вам и уже разжеванный результат. http://api.jquery.com/jQuery.browser/

...