尝试从Chrome用户代理中删除版本,格式为" Chrome / 34.0.1847.116"。
这是有效的:
userAgent.match(/.*Chrome.*?([\d|\.]*)\s/i);
这不起作用(我试图让它运转起来):
var versionRegularExpression = new RegExp('.*'+'Chrome'+'.*?([\d|\.]*)\s', 'i');
userAgent.match(versionRegularExpression);
我必须错误地格式化我的新RegExp - 有谁能告诉我我是如何弄乱的?
完整的用户代理是:
var userAgent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36';
答案 0 :(得分:4)
当您使用RegExp
对象而不是RegEx文字时,您还需要转义\
,
new RegExp('.*'+'Chrome'+'.*?([\\d|\\.]*)\\s', 'i');
此外,Chrome
不需要连接,它可以是单个字符串文字的一部分,就像这样
new RegExp('.*Chrome.*?([\\d|\\.]*)\\s', 'i');
作为Paulpro points out in the comments section,当您使用字符类时,|
将被视为允许的字符之一,而不是OR运算符。所以,你不需要它
new RegExp('.*Chrome.*?([\\d\\.]*)\\s', 'i');
使用构造函数时,需要使用普通的字符串转义规则(前面带有\的特殊字符,当包含在字符串中时)。例如,以下内容是等效的:
var re = /\w+/; var re = new RegExp("\\w+");
答案 1 :(得分:2)
在Chrome之前匹配.*
似乎毫无意义。您也不需要|
或转义字符类中的.
。我会用这个:
userAgent.match(/Chrome\/([\d.]*)/);