Internet Explorer中的多行js正则表达式替换

时间:2009-08-19 05:04:21

标签: javascript jquery regex internet-explorer

我正在尝试用Javascript替换多行,IE给我带来了麻烦。

pastebin在这里:http://jsbin.com/olahi/edit

我正在尝试做的解释: 这是我的HTML:

<textarea id="editthis">
Hello from JS Bin
Whats up from JS Bin
Whats
up from JS Bin
</textarea >

我的JS:

jQuery.fn.runReplacement= function(expr) {
    return this.each(function() {
        this.innerHTML = this.innerHTML
        .replace(/Hello/ig, "Hey")
        .replace(/Whats ?\n? ?up/ig, "Hey")
        ;
    });
};

$(function() {
  $("textarea").runReplacement();
});

在我的JS(jQuery)示例中,我只是想用'嘿'来替换Hello和'Whats up'。

在IE中,前两行有效,但不是第三行(和第四行)。在Chrome和FF中,所有4行都可以使用。

我没有看到任何理由为什么IE不应该支持\ n。我做错了吗?

提前致谢。

谢谢大家,了解IE需要/ r / n而不仅仅是/ n。

任何使我的代码跨浏览器的建议,而不仅仅是IE或其他所有。

谢谢!

3 个答案:

答案 0 :(得分:1)

在IE6中,它实际上对我来说很好。然而,这应该是一个“更好”的正则表达式,因为它将匹配\ r和\ n字符(这可能是IE正在滑落的地方 - 看到\ r而不是,或者和\ n),以及任何空格。

str.replace(/Whats\s+up/ig, "Hey")

答案 1 :(得分:1)

CR / LF字符与IE与其他浏览器略有不同。在IE中它是\ r \ n。

跨浏览器解决方案:/什么?\ r?\ n? ?向上/

答案 2 :(得分:1)

Internet Explorer使用\r\n作为<textarea>中的换行符。