gpt4 book ai didi

javascript - 使用正则表达式检索浏览器名称

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:36 25 4
gpt4 key购买 nike

javascript 中的 RegExp 有问题。我试图只返回版本号和浏览器名称,即“firefox 22.0”或“msie 8.0”

console.log(navigatorSaysWhat())

function navigatorSaysWhat()
{
var rexp = new RegExp(/(firefox|msie|chrome|safari)\s(\d+)(\.)(\d+)/i);
// works in ie but not in firefox
var userA = navigator.userAgent
var nav = userA.match(rexp);
return nav
}

上面的表达式不太行得通。我正在尝试匹配字符串中的浏览器名称和版本号。

Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;

我试过 (firefox|msie|chrome|safari)\s(\d+)(./\/)(\d+) 来匹配反斜杠或 (firefox|msie|chrome|safari)\s(\d+)(*)(\d+) 对于任何字符,但没有骰子。

最佳答案

正则表达式区分大小写。通过添加 (?i) 或您正在使用的正则表达式引擎提供的其他方式来忽略大小写。

(?i)(firefox|msie|chrome|safari)[/\s]([\d.]+)

这是 Python 示例。

>>> agents = 'Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C'
>>> [[m.group(1), m.group(2)] for m in re.finditer(r'(?i)(firefox|msie|chrome|safari)[\/\s]([\d.]+)', agents)]
[['Firefox', '22.0'], ['MSIE', '8.0']]

在 Javascript 中:

var agents = 'Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C';
agents.match(/(firefox|msie|chrome|safari)[/\s]([\d.]+)/ig)
=> ["Firefox/22.0", "MSIE 8.0"]

关于javascript - 使用正则表达式检索浏览器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com