我正在使用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
它始终使用最后找到的;或者),当我想要它找到;或)紧跟版本号后。怎么做?
答案 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_]+)/
只要您可以依靠仅由数字和下划线组成的版本号,应该可以解决问题。
希望这有帮助!