更改正则表达式返回2个值而不是userAgent字符串中的3个值

时间:2010-04-30 00:12:50

标签: javascript regex user-agent

我从jQuery中获取了一个正则表达式来检测浏览器的引擎是否为WebKit并获取它的版本号,它返回从userAgent字符串中提取的3个值:webkit / ... ....,webkit和.... ...... [“...... ......”是版本号]。

我希望正则表达式只返回2个值:webkit和...... .......

我对正则表达式很垃圾,所以请你能用你的答案解释一下表达方式。

我正在使用并希望改进的正则表达式为:/(webkit)[\/]([\w.]+)/

/(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

我感谢您的帮助,提前谢谢!

2 个答案:

答案 0 :(得分:1)

在正则表达式中,返回的值是括号中的值:

/([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

答案 1 :(得分:0)

嘿,如果你正在使用jQuery,那么这个建议的内置方法可以为你提供已经咀嚼的结果。 http://api.jquery.com/jQuery.browser/