开发者问题收集

RegExp 未捕获 TypeError:无法读取 null 的属性“1”

2014-06-11
4091

我找到了此代码;

navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

用于检测浏览器版本。此代码在 IE 8 以下版本中有效,但在 Google Chrome 中无效。谷歌浏览器中的错误提示为:

Uncaught TypeError: Cannot read property '1' of null

并且它指向此代码所属的行;

navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

有没有什么办法可以修复这个问题?


为了更清楚起见,我在这里要完成的是检测浏览器版本:

var version = navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

if(version <= 8.0)

{
   execute code;
}

IE 中一切正常,但我在谷歌浏览器中遇到了错误:

Uncaught TypeError: Cannot read property '1' of null

并且它指向此代码所属的行;

navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

1个回答

match 如果 regexp 未找到任何内容,则可能返回 null 。因此,您必须先获取匹配项,然后检查是否有匹配项。试试这个:

var ieMatches = navigator.appVersion.match(/MSIE ([\d.]+)/);
var isIE = !!ieMatches[1];
Alex
2014-06-11