Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式替换所有引用_Javascript_Regex - Fatal编程技术网

javascript正则表达式替换所有引用

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

我正在尝试用以下代码匹配并替换所有出现的模式,但它不起作用: 据我所知,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 = 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-
    转义