使用RegEx-Javascript替换字符串的一部分

使用RegEx-Javascript替换字符串的一部分,javascript,regex,Javascript,Regex,我试图使用replace()方法将字符串中的“parameters”替换为参数的实际值,但由于某些原因,我无法使其工作。我使用的字符串是: var temp = "This {{application}} will be down from {{start}} to {{finish}}." 我想用应用程序名替换{application},依此类推 var regEx = /{{(.*?)}}/; 这是我用来抓取括号和该部分之间的值的正则表达式。以下是我的代码的其余部分: if (regEx

我试图使用replace()方法将字符串中的“parameters”替换为参数的实际值,但由于某些原因,我无法使其工作。我使用的字符串是:

var temp = "This {{application}} will be down from {{start}} to {{finish}}."
我想用应用程序名替换{application},依此类推

var regEx = /{{(.*?)}}/;
这是我用来抓取括号和该部分之间的值的正则表达式。以下是我的代码的其余部分:

if (regEx.exec(temp)[1] === "application") {
     temp.replace(regEx, params.value);
}

“params.value”是应用程序的名称。我原以为这样行得通,但事实并非如此

您可以在替换中使用回调来评估捕获组内容:

var name=“谷歌”;
var temp=“此{application}}将从{{start}}下降到{{finish}。”;
var res=temp.replace(/{(.*?}}}/g,函数(m,g){
返回g==“应用”?名称:m;
});

document.body.innerHTML=res您可以在替换中使用回调来评估捕获组内容:

var name=“谷歌”;
var temp=“此{application}}将从{{start}}下降到{{finish}。”;
var res=temp.replace(/{(.*?}}}/g,函数(m,g){
返回g==“应用”?名称:m;
});

document.body.innerHTML=res仅替换单个字符串(静态)

var appName=“应用程序”,
regex=新的RegExp(“{{{appName+“}}}”,“g”),
temp=“此{application}}将从{{start}}下降到{{finish}”;
变量参数={
值:“StackOverflow”
};
温度=温度替换(正则表达式,参数值);
控制台日志(temp);

document.body.innerHTML=temp仅替换单个字符串(静态)

var appName=“应用程序”,
regex=新的RegExp(“{{{appName+“}}}”,“g”),
temp=“此{application}}将从{{start}}下降到{{finish}”;
变量参数={
值:“StackOverflow”
};
温度=温度替换(正则表达式,参数值);
控制台日志(temp);

document.body.innerHTML=temp这里是一个帮助函数,用于生成您所期望的内容

function replace(str, dict) {
    return str.replace(/{{(.*?)}}/g, function(match, $1) {
        return dict[$1] || match;
    });
}

replace(
    "This {{application}} will be down from {{start}} to {{finish}}.",
    {
        'application': 'pigeon',
        'start': '8am',
        'finish': '9pm'
    }
);
// "This pigeon will be down from 8am to 9pm."

这将接受要替换的值和替换的值的映射。并返回格式正确的字符串。

这是一个帮助函数,用于生成所需的内容

function replace(str, dict) {
    return str.replace(/{{(.*?)}}/g, function(match, $1) {
        return dict[$1] || match;
    });
}

replace(
    "This {{application}} will be down from {{start}} to {{finish}}.",
    {
        'application': 'pigeon',
        'start': '8am',
        'finish': '9pm'
    }
);
// "This pigeon will be down from 8am to 9pm."

这将接受要替换的值和替换的值的映射。并返回格式正确的字符串。

为什么不使用简单的普通替换?我试过了。出于某种原因,它不起作用。解决办法是切换到正则表达式?!?!你知道,你的
var temp=..
的末尾缺少一个分号,这可能就是替换不起作用的原因。为什么不使用简单的普通替换呢?我试过了。出于某种原因,它不起作用。解决办法是切换到正则表达式?!?!你知道,你的
var temp=..
的末尾缺少一个分号,这可能就是替换不起作用的原因。这只会替换每个标记的第一次出现。你是对的!所以是的。。。正则表达式是必需的(或者是一个丑陋的循环):)。我为正则表达式编辑。这只会替换每个标记的第一次出现。你说得对!所以是的。。。正则表达式是必需的(或者是一个丑陋的循环):)。我为正则表达式编辑。