RegEx首次出现

时间:2011-04-01 20:40:46

标签: javascript regex

我正在使用JavaScript上下文检测器。

它解析UA的一些常见数据,如操作系统版本和浏览器版本。

它几乎可以使用RegExp。

与检测Mac OS X版本的脚本类似:/(Intel|PPC) Mac OS X (.+)[\);]/

它将数据保存到我将调用$的对象。

$.Mac应为10_6_7,而应为10_6_7) AppleWebKit/534.24 (KHTML, like Gecko

完整的ua是Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.25 Safari/534.24

它始终使用最后找到的;或者),当我想要它找到;或)紧跟版本号后。怎么做?

2 个答案:

答案 0 :(得分:3)

.+ nongreedy。

/(Intel|PPC) Mac OS X (.+?)[\);]/

在:

var str = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.25 Safari/534.24',
    re = /(Intel|PPC) Mac OS X (.+)[\);]/;

str.match(re); // ["Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko)", "Intel", "10_6_7) AppleWebKit/534.24 (KHTML, like Gecko"]

后:

var re = /(Intel|PPC) Mac OS X (.+?)[\);]/;

str.match(re): // ["Intel Mac OS X 10_6_7)", "Intel", "10_6_7"]

答案 1 :(得分:1)

或者,让您的.+更具体:

/(Intel|PPC) OS X ([0-9_]+)/
只要您可以依靠仅由数字和下划线组成的版本号,

应该可以解决问题。

希望这有帮助!