正则表达式不IE8工作(RegEx not working in IE8)

2019-10-17 17:41发布

OK,寻找高和低的都在这里,并在谷歌之后,我不得不硬着头皮在这里问关于IE8的正则表达式的新问题。

我有以下代码:

var output = input.replace(/^\S+(\s| )+/, '');

其目的是从大量删除人名币,所以“KR 12 345,00”变成“12 345,00”和“NOK 12 345,00”变成“12 345,00”等。

这种无处不在正常工作中,除了版本的Internet Explorer 8或以下, 然后离开输入不变

起初,我用的是new RegExp()做这件事的方式,但它改为正则表达式文本,看看是否有IE之间如何处理这两个变化的差异-这,值得庆幸的是,没有了:)

我也曾尝试只用\s与刚刚  但这并没有有所作为。

真正奇怪的是,运行具有“KR 12 345,00”上述正则表达式时,作为输入W3学校的“亲自尝试”页 IE 8中正常工作! (同样当第一空间取代有 

因此,要重申:用我的Javascript代码,它驻留在AngularJS过滤功能(我定义过滤器)正则表达式时,过滤器将返回在IE8原始输入我看到这个问题的地方(这还可以看出与的console.log()在IE8)。 其他人测试了它在IE9对我来说,并报告说,它工作得很好那里 - 我已经在Chrome测试也是如此。 在我遇到此问题的唯一的浏览器IE8是和IE7。

这到底是发生在这里?

Answer 1:

尝试

var output = input.replace(/^\S+([\s\xA0]| )+/, '');

据在这里 ,“在IE8 ... \ S(其中应包括所有空格)不包括非换空间”。

或者更好的,只是使用

var output = input.replace( /^\D+/, '' );

其中\D是任何非数字字符。



Answer 2:

首先,你要检查  我猜你是从(使用HTML获得这个值el.innerHTML$(el).html()一个更好的方法,该方法将所有非换空格到“”是使用el.textContent$(el).text()其中也包括你在那里例如货币名称被包裹在一个跨度(这可能会对数字在它的属性情况下))

那么下面的正则表达式替换所有非数字字符串的开始

var output = input.replace(/^[^\d]+/, '');


文章来源: RegEx not working in IE8