替换文本的Javascript和正则表达式

替换文本的Javascript和正则表达式,javascript,html,regex,Javascript,Html,Regex,先生, 我在用javascript做一个项目。我想用正则表达式替换一个文本。在一个段落中,我想用javascript替换一些单词 例如: 这里所有的“到”都将被替换。我们不想删除| code到code之间的代码,请帮助我任何一个…我认为你不应该依赖regexp来完成这类任务,因为它会过于复杂,因此速度很慢。无论如何,如果您的表达式是正确的(即,对于每个“| code”都有一个“code”,并且没有嵌套的code标记),您可以尝试以下操作: var n = str.replace(/to(?!(?

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

例如:


这里所有的“”都将被替换。我们不想删除| codecode之间的代码,请帮助我任何一个…

我认为你不应该依赖regexp来完成这类任务,因为它会过于复杂,因此速度很慢。无论如何,如果您的表达式是正确的(即,对于每个
“| code”
都有一个
“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  "]
var chunks=[],i,p=0,q=0;
而((p=str.indexOf(“| code”,p))!=-1){
if(q

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

我认为您不应该依赖regexp完成此类任务,因为它会过于复杂,因此速度较慢。无论如何,如果您的表达式是正确的(即,对于每个
“| code”
都有一个
“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  "]
var chunks=[],i,p=0,q=0;
而((p=str.indexOf(“| code”,p))!=-1){
if(q

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

如果要将所有“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");

如果要将所有“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");