This question already has an answer here:
Why this javascript regex doesn't work?

(1个答案)


6年前关闭。




尝试从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';

最佳答案

当您使用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');
引用MDN's RegExp page

10-04 22:53
查看更多