【问题标题】:Multi line js regex replacement in Internet explorerInternet Explorer 中的多行 js 正则表达式替换
【发布时间】:2009-08-19 05:04:21
【问题描述】:

我正在尝试替换 Javascript 中的多行内容,IE 给我带来了麻烦。

在这里粘贴: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' 替换为 'Hey'。

在 IE 中,前两行有效,但第三(和第四)行无效。在 Chrome 和 FF 中,所有 4 行都有效。

我看不出 IE 不支持 \n 的任何原因。我是不是做错了什么?

提前致谢。

谢谢大家,很高兴知道 IE 需要 /r/n 而不仅仅是 /n。

关于使我的代码跨浏览器的任何建议,而不仅仅是 IE 或其他任何东西。

谢谢!

【问题讨论】:

    标签: javascript jquery regex internet-explorer


    【解决方案1】:

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

    跨浏览器解决方案:/Whats ?\r?\n? ?上/

    【讨论】:

    • 谢谢,有什么建议可以让它跨浏览器工作吗?
    【解决方案2】:

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

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

    【讨论】:

    • 对不起,我需要专门匹配一个新行,而不仅仅是一个空格。
    • 作为记录,在正则表达式中 \s 将匹配任何“空白” - 这包括空格 (' ')、制表符 (\t)、回车 (\r)、换行符 (\n) .
    【解决方案3】:

    Internet Explorer 使用\r\n 作为&lt;textarea&gt; 中的换行符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多