这是我到目前为止所得到的:
/(netscape)|(navigator)\/(\d+)(\.(\d+))?/.test(UserAgentString.toLowerCase()) ? ' netscape'+RegExp.$3+RegExp.$4 : ''
我在这里尝试做几件不同的事情。
(1)。我想匹配or ,它后面必须跟一个斜杠和一个或多个数字。 netscape
navigator
(2)。它可以选择跟随这些数字,最多可以是以下之一:一个句点和一个或多个数字。
如果 (1) 不为真,则表达式应计算为空字符串。
表达式应该返回' netscape8'
if UserAgentString
is Netscape/8
or Navigator/8
。
表达式应该返回' netscape8.4'
if UserAgentString
is Navigator/8.4.2
。
正则表达式不起作用。特别是(这是我测试的一个经过编辑的版本,它仍然不起作用):
// in Chrome this produces ["netscape", "netscape", undefined, undefined]
(/(netscape)|(navigator)\/(\d+)/.exec("Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.5) Gecko/20060912 Netscape/8.1.2".toLowerCase()))
为什么不8
匹配?它应该出现在第三个条目还是第四个条目中?
有几件事我想弄清楚它们是否受支持。请注意我有 5 组捕获父组。组 #5\d+
包含在组 #4:\.(\d+)
中。是否可以检索匹配的组?
另外,如果我指定这样的组会发生什么?/(\.\d+)*/
这匹配任何数量的“点号”字符串连接在一起(如版本号)。这里RegExp.$1
应该匹配什么?