Javascript 由于浏览器版本而重定向

Javascript 由于浏览器版本而重定向,javascript,Javascript,如果客户的浏览器名称/版本不在列表中,我需要将其重定向到另一个网页 我想我的问题的答案在这里,但我不明白 我想这就是我要找的 ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) 在navigator.userAgent中查找匹配项,但我不理解正则表达式 作为第三种选择,我试图阅读这篇文章,但我也不明白 if(M[1]=== 'Chrome'){ tem= ua.match(/\b(OP

如果客户的浏览器名称/版本不在列表中,我需要将其重定向到另一个网页

我想我的问题的答案在这里,但我不明白

我想这就是我要找的

ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)
navigator.userAgent
中查找匹配项,但我不理解正则表达式

作为第三种选择,我试图阅读这篇文章,但我也不明白

if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}

有人能简单地解释一下吗?

正则表达式是搜索文本的一种简单方法。缺点是它们非常陈旧。如果你反复阅读和练习教程,你可以在几周内学会正则表达式

这里的每个人都试图编写一个正则表达式来从
用户代理
字符串中查找浏览器的文本,这主要是因为用户代理字符串已经很难读取了。你可以在网站上了解它

正如您所看到的,字符串的文本是关于解释使用什么浏览器访问您的网站。因此,大多数正则表达式只是试图找到浏览器名称

在您的第二个示例中,这一点尤为明显:

opera|chrome|safari|firefox|msie|trident
在正则表达式中,管道用于表示
,因此上面说的是
opera或chrome或safari或firefox或msie或trident
,因为您可能知道
msie
意味着microsoft internet explorer,您可以看到这只是一个浏览器列表

您可以轻松地在字符串中搜索文本。在javascript中,这是通过
indexOf
完成的,但也存在风险,因为用户代理字符串通常会列出后备浏览器,以防您的if语句无法理解它们的浏览器名称

如果我在寻找chrome浏览器,我可能会这样做

if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
    // do stuff with chrome
}

希望有帮助。

这很有帮助。非常感谢。除了“user.agent string”之外,还有其他方法可以找出浏览器的特征吗。事实是,用户代理字符串只与用户一样可信。看看他们在这里的表现