【问题标题】:Javascript: Using regEx to change more than one character or group of characters at a timeJavascript:使用正则表达式一次更改多个字符或一组字符
【发布时间】:2013-05-13 04:51:41
【问题描述】:

我知道如何编写相当简单的正则表达式,我的问题是关于一次更改多个字符或多个字符 - 不超过一个字符或多个字符的实例,但多个匹配字符或字符以分隔值一键更换。

例如,如果我想将文本区域中的所有换行符更改为
,我可能会编写代码:

var withoutNewLines = document.getElementById("taInput").value.replace(/\n/g, "<br>");

如果我想将所有空格更改为  ,我会编写代码:

var withoutNewLines = document.getElementById("taInput").value.replace(/ /g, "&nbsp;");

如果我想在一个语句中同时更改两者,我会编写代码:

var withoutNewLines = document.getElementById("taInput").value.replace(/\n/g, "<br>").replace(/ /g, "&nbsp;");

我的问题是:

有没有办法编写一个正则表达式,只需调用一次 replace() 就可以进行这两项更改?

【问题讨论】:

  • 查看 MDN 文档中的 RegExp 和替换方法,您会发现可以使用“|”在正则表达式中充当“或”,您可以将函数作为第二个参数传递给替换调用
  • 对于全局替换,Ian 的解决方案有效,但我可能会像您的问题一样运行两个单独的替换调用。
  • @OldPro 我同意,我只是想提供我认为他们正在寻找的东西 :)

标签: javascript regex replace textarea getelementbyid


【解决方案1】:

这有点不必要,但你可以试试:

var newStr = "Some string".replace(/o|m/g, function (match) {
    if (match === "o") {
        return "i";
    } else if (match === "m") {
        return "r";
    }
});
console.log(newStr);

这里将所有“o”替换为“i”,将所有“m”替换为“r”。

参考:

【讨论】:

  • @OldPro 感谢您的回复。我想我会坚持多次更换电话。我也会将此发布以通知 Ian,但这个该死的软件只允许通知 cmets 中的一个用户。我会单独评论“对”伊恩。
  • @OldPro 感谢您的回复。正如你所建议的,我想我会坚持多次更换电话。我怀疑它比使用 OR 字符的组合替换需要更多的 CPU 时间。我也会发布这个通知给 Ian,但是这个该死的软件只允许通知 cmets 中的一个用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多