javascript正则表达式替换所有引用
我正在尝试用以下代码匹配并替换所有出现的模式,但它不起作用: 据我所知,Regex的模式应该是javascript正则表达式替换所有引用,javascript,regex,Javascript,Regex,我正在尝试用以下代码匹配并替换所有出现的模式,但它不起作用: 据我所知,Regex的模式应该是/string/g var text = "ldkfglkfdj {example} fdgfdgfdg {example}"; var List = ["{example}", "string"]; function replace(text) { for (var key in List) { if (text.includes(key)){ var regexp = n
/string/g
var text = "ldkfglkfdj {example} fdgfdgfdg {example}";
var List = ["{example}", "string"];
function replace(text) {
for (var key in List) {
if (text.includes(key)){
var regexp = new RegExp("/"+key+"/g");
text = text.replace(regexp, List[key]);
}
}
return text;
}
RegExp
对象时,不包括/
和/
。您仅在生成隐式语法时使用该语法:var reg=/something/g代码>
g
开关作为第二个参数传递给RegExp
,作为
绳子if
测试。只要更换,如果
模式存在,它将被替换。如果没有,就不会for/in
循环用于循环对象,而不是array
,在这里,您首先不需要循环。只需找到列表[0]
并替换为列表[1]
var text=“ldkfglkfdj{findThis}fdgfdgdgfdg{findThis}”;
var List=[“{findThis}”,“已替换!”;
函数替换(文本){
var regexp=new regexp(列表[0],“g”);
返回text.replace(regexp,List[1]);
}
控制台日志(替换(文本))代码>
在创建显式RegExp
对象时,不包括/
和/
。您仅在生成隐式语法时使用该语法:var reg=/something/g代码>
g
开关作为第二个参数传递给RegExp
,作为
绳子
此外,您不需要if
测试。只要更换,如果
模式存在,它将被替换。如果没有,就不会
for/in
循环用于循环对象,而不是array
,在这里,您首先不需要循环。只需找到列表[0]
并替换为列表[1]
最后,您正在用相同的模式替换找到的模式
var text=“ldkfglkfdj{findThis}fdgfdgdgfdg{findThis}”;
var List=[“{findThis}”,“已替换!”;
函数替换(文本){
var regexp=new regexp(列表[0],“g”);
返回text.replace(regexp,List[1]);
}
控制台日志(替换(文本))代码>您不必为此使用正则表达式。只需在搜索文本上拆分,并在替换文本上联接,如下代码段所示:
var text=“ldkfglkfdj{example}fdgfdgdg{example}”;
var List=[“{example}”,“string”];
console.log(text.split(List[0]).join(List[1])
您不必为此使用正则表达式。只需在搜索文本上拆分,并在替换文本上联接,如下代码段所示:
var text=“ldkfglkfdj{example}fdgfdgdg{example}”;
var List=[“{example}”,“string”];
console.log(text.split(List[0]).join(List[1])
使用此选项,这是假设您的数组具有用于替换的键值
var str=“ldkfglkfdj{example}fdgfdgdg{example}”;
函数替换(文本){
var[regex,string]=[“{example\}”,“Ele”];
var regexp=新的regexp(regex,“g”);
text=text.replace(regexp,string);
返回文本;
}
log(replace(str))
使用此选项,这是假设您的数组具有用于替换的键值
var str=“ldkfglkfdj{example}fdgfdgdg{example}”;
函数替换(文本){
var[regex,string]=[“{example\}”,“Ele”];
var regexp=新的regexp(regex,“g”);
text=text.replace(regexp,string);
返回文本;
}
log(replace(str))
Regex与模式一起使用。如果您只想替换所有引用而不将字符串解释为模式,则可以使用以下简单函数:
String.prototype.replaceAll = function (searchValue, replaceValue) {
var str = this;
return str.split(searchValue).join(replaceValue);
};
您可以在代码中这样调用它:
String.prototype.replaceAll=函数(searchValue,replaceValue){
var str=这个;
返回str.split(searchValue).join(replaceValue);
};
var text=“ldkfglkfdj{example}fdgfdgdg{example}”;
var List=[“{example}”,“string”];
text=text.replaceAll(列表[0],列表[1]);
console.log(文本)代码>Regex与模式一起使用。如果您只想替换所有引用而不将字符串解释为模式,则可以使用以下简单函数:
String.prototype.replaceAll = function (searchValue, replaceValue) {
var str = this;
return str.split(searchValue).join(replaceValue);
};
您可以在代码中这样调用它:
String.prototype.replaceAll=函数(searchValue,replaceValue){
var str=这个;
返回str.split(searchValue).join(replaceValue);
};
var text=“ldkfglkfdj{example}fdgfdgdg{example}”;
var List=[“{example}”,“string”];
text=text.replaceAll(列表[0],列表[1]);
console.log(文本)代码>实例化正则表达式时不要使用分隔符/
。应该是newregexp(key,“options”)
另外,如果使用regex,如果key字符包含元字符,则应该通过key.replace(/([\(\)\*\+,\-\.\?\[\\\]\^{\\\\\\\\\\\\$1
)之类的方式对它们进行转义(var RegExp=new RegExp(“/”+key+“/g”)
不正确,第一个参数应该是字符串,第二个参数是要设置的标志。所以,var regexp=new regexp(key,'g')
@sln不知道为什么,但我的工作原理是不使用转义{
和}
@jotyhista-{}
是元字符量词,范围运算符。我确信example{27}
regex与example{27}
string不匹配。但是,我确信这一点。如果您需要更深入的建议,请开始另一个问题。在实例化正则表达式时不要使用分隔符/
。应该是newregexp(key,“options”)
另外,如果使用regex,如果key字符包含元字符,则应该通过key.replace(/([\(\)\*\+,\-\.\?\[\\\]\^{\\\\\\\\\\\\$1
)之类的方式对它们进行转义(var RegExp=new RegExp(“/”+key+“/g”)
不正确,第一个参数应该是字符串,第二个参数是要设置的标志。所以,var regexp=new regexp(key,'g')
@sln不知道为什么,但是我的工作没有使用{
和}
@jotyhista-转义