【问题标题】:Regex does not work in IE9正则表达式在 IE9 中不起作用
【发布时间】:2011-01-20 12:41:20
【问题描述】:

关于为什么以下内容不适用于任何 IE9 测试版的任何想法? IE8正常(或IE9运行兼容模式):

if(b.msie){
  b.ver = /MSIE (\d+(.\d+)?)/.exec(ua)[1];
 }else if(b.mozilla){
  b.ver = /Firefox\/(\d+(.\d+)?)/.exec(ua)[1];
 }else if(b.opera){
  b.ver = /Opera\/? ?(\d+(\.\d+)?)/.exec(ua)[1];
 }else if(b.safari){
  b.ver = /Version\/(\d+(\.\d+)+)/.exec(ua)[1];
 }else if(b.chrome){
  b.ver = /Chrome\/(\d+(\.\d+)+)/.exec(ua)[1];
 }

【问题讨论】:

  • 什么“不起作用”?错误信息?出乎意料的结果?没发生什么事?电脑炸了?
  • 它是用咖啡代替茶吗?
  • 会不会是 IE9 报告其用户代理与以前的版本不同,因此与字符串不匹配?另外,您是否认为浏览器检测可能是个坏主意?特征检测通常比浏览器检测更好,正是因为这样的问题 - 当新版本发布时,浏览器检测往往会中断(如图所示)。另外,用户代理字符串可以被覆盖甚至完全阻止,这意味着您的浏览器检测脚本可能会被用户欺骗。

标签: regex internet-explorer-9


【解决方案1】:

你不想String.match()吗?例如b.ver = ua.match(/MSIE (\d+(\.\d+)?)/)[1];
您还需要在字符类之外转义 .

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2014-09-12
    • 2012-02-13
    相关资源
    最近更新 更多