Javascript RegExp首次出现

Javascript RegExp首次出现,javascript,regex,Javascript,Regex,我正在使用JavaScript上下文检测器 它解析UA中的一些常见数据,如操作系统版本和浏览器版本 它几乎所有的东西都使用RegExp 与检测Mac OS X版本的脚本类似:/(英特尔PPC)Mac OS X(+)[\;]/ 它将数据保存到我将调用的对象中 $.Mac应该是10_6_7,但它是10_6_7)AppleWebKit/534.24(KHTML,像Gecko 完整的ua是Mozilla/5.0(Macintosh;英特尔Mac OS X 10_6_7)AppleWebKit/534.2

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

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

它几乎所有的东西都使用RegExp

与检测Mac OS X版本的脚本类似:
/(英特尔PPC)Mac OS X(+)[\;]/

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

$.Mac
应该是
10_6_7
,但它是
10_6_7)AppleWebKit/534.24(KHTML,像Gecko

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


它总是使用最后找到的;或者),当我想让它找到的时候;或)紧跟在版本号之后。如何做到这一点?

使
+
不冻结

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

+
设置为非冻结状态

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

或者,使您的
+
更加具体:

/(Intel|PPC) OS X ([0-9_]+)/
只要你能指望你的版本号只包含数字和下划线,你就应该做到这一点


希望这有帮助

或者,使您的
+
更加具体:

/(Intel|PPC) OS X ([0-9_]+)/
只要你能指望你的版本号只包含数字和下划线,你就应该做到这一点


希望这有帮助

您正在使用jQuery吗?它已经有了这个。为什么每个人都要问所有的事情,这是行不通的。它没有给出Chrome/Safari的真实版本号,也没有操作系统数据。我之所以提到它,是因为。啊。不过我更喜欢你的答案。:)您正在使用jQuery吗?它已经有了这个。为什么每个人都要问所有的事情,这是行不通的。它没有给出Chrome/Safari的真实版本号,也没有操作系统数据。我之所以提到它,是因为。啊。不过我更喜欢你的答案。:)我更喜欢使用
reg.exec(str)
。我更喜欢使用
reg.exec(str)