正则表达式不适用于使用IE 7的Javascript

时间:2011-11-17 13:51:41

标签: javascript regex internet-explorer replace

last_tag="abcde   x";
last_tag = last_tag.replace(/[\s]+x$/, '');

这是我的问题:我必须删除字符串末尾的“x”。这段代码用于我一直使用的插件,直到现在。在IE 7上,“last_tag”以错误的方式被选中,所以我得到一个“x”,我必须删除它。我认为谁编写了这个插件添加了这个替换来做到这一点,但它不适用于IE7。

实施例: 之前:last_tag =“abcde x” 之后:last_tag =“abcde”

实际上问题是last_tag保持完全相同。

是正则表达式吗? IE有任何错误或兼容性问题吗?

编辑:可能正则表达式不是问题。

我尝试过这段代码,但没有任何反应:

var temp_tag="abc x";
alert(temp_tag);
temp_tag = temp_tag.replace(/[\s]+x$/, '');
alert(temp_tag)

同一段代码在Chrome上完美运行。

3 个答案:

答案 0 :(得分:3)

正则表达式看起来没问题,但您可能尝试匹配不间断空格(U+00A0)。 \s与IE中的不匹配(如this answer中所述),但它在FireFox和Chrome中都有效。

答案 1 :(得分:2)

我会选择这个RegExp

/\s+x$/

不要对[]使用字符类\s,因为[ \t\r\n\v\f]已经是一个字符类 (/[\s\u00A0]+x$/ 之类的简写)(空格,制表符,回车符,换行符,垂直制表符,换页符)


编辑
艾伦摩尔是对的: 试试这个

\u00a0

编辑
也许这是区分大小写的:也许{{1}}不正确

这应匹配每个空格字符以及非间隔空格

答案 2 :(得分:0)

试试这个

last_tag = last_tag.replace(/[\t\r\n]+x$/, '');