Javascript正则表达式字符串替换不替换

标签 javascript regex

我有以下函数,但我的字符串从未被替换?我做错了什么?

function customRegex(){
      return function(myString,replacement,myValue){
        var s = myString;
        var rgx = new RegExp("/("+replacement+")/,gi");
        myString = myString.replace(rgx, myValue);
        return myString;
    }
  }

  var reg = customRegex();
  console.log( reg("This is the worst!","worst","best"));
  //This is always returning the original string?

最佳答案

正则表达式声明有问题。您似乎尝试添加正则表达式分隔符,但在构建动态模式时 RegExp 构造函数接受 string,因此,/ 被视为字符串模式中的文字符号。正则表达式修饰符 gi 应作为第二个字符串参数传递。

使用

var rgx = new RegExp(replacement,"gi");

请参阅下面的演示:

function customRegex(){
      return function(myString,replacement,myValue){
        var s = myString;
        var rgx = new RegExp(replacement,"gi");
        myString = myString.replace(rgx, myValue);
        return myString;
    }
  }

  var reg = customRegex();
  console.log( reg("This is the worst!","worst","best"));

此外,如果您的搜索模式可以包含特殊的正则表达式元字符,您将需要转义它们。请参阅Is there a RegExp.escape function in Javascript?所以线程。

关于Javascript正则表达式字符串替换不替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382896/

相关文章:

java - Java中提取子字符串

javascript - 我需要使用正则表达式和 Javascript 匹配 url 路径的特定部分

regex - Notepad++如何删除字符串后的所有字符

正则表达式匹配 URL 中的单词

javascript - Framework7 inside webview页面未加载

javascript - 定义模块内的worker是使用绝对路径而不是相对路径上传的,为什么?

JavaScript EventSource 在 Apache 基本身份验证后不会打开连接

javascript - 验证字数小于 100 的正则表达式

javascript - Angular 拖放列表 : Inputs with draggable property causing unintended behavior in IE

javascript - 比较两个大型字符串数组以找出差异?有什么高效的算法吗?