jquery - 正则表达式 match() 在 FF/Chrome 中有效,但在 IE 8 中无效

标签 jquery regex internet-explorer-8

我有以下 jQuery 调用,它在 FF/Chrome 中返回匹配项,但在 IE 8 中返回 null。

Here's the fiddle如果您想亲自尝试一下。

这是不可解决的、不灵活的、任性的代码:

var m = $('#somediv').text().match(/\d+-(\d+)\sof\s(\d+)/);

编辑:感谢 Rob W。我已经缩小了范围;以下内容有效,因此具体来说是“of ”或“\sof\s”失败了。叉开 fiddle 并亲自尝试一些:(

var m = $('#somediv').text().match(/\d+\D(\d+)\D+(\d+)/);

最佳答案

基于 Rob W 的答案,该答案解决了默认情况下 replace 不会全局替换的问题,这里的另一件事是您正在搜索的实际文本。 Rob W 还指出,由于您使用 jQuery 的 text() 获取文本,因此   实体已被解码为实际的不间断空格字符。

  是一个 HTML 实体,将其指定为 replace 的参数实际上不会将其解释为不间断空格,它只是在主题字符串中查找实际文本  

在 IE 8 和 IE 7 兼容模式下,在搜索正则表达式中指定不间断空格 (00A0) 的 Unicode 代码点对我有用:

var m = t.replace(/\u00a0/g, ' ').match(/\d+-(\d+)\sof\s(\d+)/);

在 IE 9 中一切正常,因为它与其他浏览器一样,在 \s 中包含不间断空格。 Older versions of IE don't ,这是需要更换的唯一原因。

关于jquery - 正则表达式 match() 在 FF/Chrome 中有效,但在 IE 8 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935153/

相关文章:

c# - 显示 div 以显示操作错误

javascript - jQuery:为什么这个 For 循环不起作用?

javascript - jQuery 和 CSS :before

Python:当字典键中有 ',' 时,为什么 re.sub 不将字典键替换为字典值

ruby - 在 Ruby 正则表达式中否定字符串

regex - 美国电话号码验证

html - IE8 中的 CSS 最大宽度

javascript - Browserify:IE8 兼容性

javascript - 在 IE8 中排除 Angular 模块

javascript - 按住按钮时向上/向下滚动