1

先生,我正在用 javascript 做一个项目。我想用正则表达式替换一个文本。在一个段落中我想用 javascript 替换一些单词

例如:

 var str =" Would you like to have responses to your questions |code Would you like to have responses to your questions code| Would you like to have responses to your questions  "

 var n=str.replace("to","2");

这里所有的“ to ”都将被替换。我们不想删除|code to code|之间 请任何人帮助我......

4

2 回答 2

1

我认为你不应该依赖正则表达式来完成这类任务,因为它会过于复杂,因此速度很慢。无论如何,如果您的表达式是正确的(即,对于每个"|code"有 a"code|"并且没有嵌套code标签),您可以试试这个:

var n = str.replace(/to(?!(?:\|(?!code)|[^\|])*code\|)/g, "2");

不仅复杂,而且难以维护。在这些情况下,最好的办法是将字符串拆分为块:

var chunks = [], i, p = 0, q = 0;
while ((p = str.indexOf("|code", p)) !== -1) {
    if (q < p) chunks.push(str.substring(q, p));
    q = str.indexOf("code|", p);
    chunks.push(str.substring(p, p = q = q + 5));
}
if (q < str.length) chunks.push(str.substring(q));

// chunks === [" Would you like to have responses to your questions ",
//             "|code Would you like to have responses to your questions code|",
//             " Would you like to have responses to your questions  "]

注意:str.replace("to", "2")不会替换所有出现的,"to"只会替换第一个。

于 2012-06-09T09:56:29.240 回答
0

如果您想将所有 'to' 替换为 2,这将是代码

var str =" Would you like to have responses to your questions |code Would you like to have responses to your questions code| Would you like to have responses to your questions";
var n=str.replace(/to/g,"2");
于 2012-06-09T10:01:47.880 回答