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

Using regex to retrieve browser name

本文关键字:浏览器 检索 正则表达式      更新时间:2023-09-26

javascript中的RegExp出现问题。我试图只返回版本号和浏览器名称,即"firefox22.0"或"msie8.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"]