我有以下 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/