0

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

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

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()就可以进行这两项更改?

4

1 回答 1

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);

这是用“i”替换所有“o”,用“r”替换所有“m”。

参考:

于 2013-05-13T05:01:32.587 回答