我有一个试用浏览器是IE 9或更高版本的正则表达式。我有一个正则表达式,如果它是IE 9而不是IE 10将会识别。
努力识别IE 9:MSIE ([0-9]{1,}[\.0-9]{0,})
部分IE 10用户代理文本:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Regex目前尚未识别IE 9或10:MSIE ^(?:0|[1-9][0-9]?)$
这是在javascript中完成的,所以这是代码:
function IsIE9() {
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
//var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
var re = new RegExp("MSIE ^(?:0|[1-9][0-9]?)$");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return parseInt(rv) >= 9;
}
有人可以帮我识别一个能识别IE版本并返回数值的正则表达式(我不想在那里硬编码IE值,所以不必为每个新的IE版本更新它。
----更新----
这两个答案似乎都有效。我使用这个来获取我的正则表达式来获取版本号:MSIE ((?:0|[1-9][0-9]?))
它返回整数值。
答案 0 :(得分:2)
为什么不使用单个正则表达式提取版本号。我看了here,看来所有IE用户代理字符串的格式都是“MSIE v.n;”。
var re = /MSIE ([^;]*)/; // stop at the following semi-colon
var agentString = "agent string here";
var version = re.exec(agentString)[1]; // [1] is the capture from ()
var majorVersion = version.split('.')[0]; // "9" or "10"
但是,根据您的操作,您可能需要考虑功能检测而不是浏览器嗅探。
答案 1 :(得分:0)
删除^
和$
,这些是表示行的开头和结尾