我想在JavaScript中创建String.replaceAll()方法,我认为使用正则表达式是最简洁的方法。然而,我无法确定如何将变量传递给正则表达式。我已经可以这样做了,这将用“A”替换“B”的所有实例。

"ABABAB".replace(/B/g, "A");

但我想这样做:

String.prototype.replaceAll = function(replaceThis, withThis) {
    this.replace(/replaceThis/g, withThis);
};

但显然,这只会替换文本“replaceThis”。。。那么如何将此变量传递到正则表达式字符串中?


当前回答

如果$1对您不起作用,您可以使用此选项:

var pattern = new RegExp("amman", "i");
"abc Amman efg".replace(pattern, "<b>" + "abc Amman efg".match(pattern)[0] + "</b>");

其他回答

您始终可以重复使用indexOf:

String.prototype.replaceAll = function(substring, replacement) {
    var result = '';
    var lastIndex = 0;

    while(true) {
        var index = this.indexOf(substring, lastIndex);
        if(index === -1) break;
        result += this.substring(lastIndex, index) + replacement;
        lastIndex = index + substring.length;
    }

    return result + this.substring(lastIndex);
};

当替换包含匹配项时,这不会进入无限循环。

可以将字符串用作正则表达式。别忘了使用新的RegExp。

例子:

var yourFunction = new RegExp(
        '^-?\\d+(?:\\.\\d{0,' + yourVar + '})?'
      )

如果$1对您不起作用,您可以使用此选项:

var pattern = new RegExp("amman", "i");
"abc Amman efg".replace(pattern, "<b>" + "abc Amman efg".match(pattern)[0] + "</b>");

如果使用正确的语法传递变量,可以使用下面的代码这样做。

这还有一个额外的好处,就是在同一个变量中使用标志。

此外,当涉及到\w等时,您不必在正则表达式中进行双转义。

var str=“regexVariable示例:这是我用regexVariable替换RegExp的示例。”var reVar=/(.*?)(正则表达式\w+?able)(.+?)/gi;var resStr=str.replace(新RegExp(reVar),'$1:):):)$2:)::)$3');console.log(resStr);//退货://:):)::)regexVariable:):。

原型版本符合OP的示例:

var str=“regexVariable原型:这是我用regexVariable替换RegExp的示例。”String.prototype.regexVariable=函数(reFind,reReplace){return str.replace(新RegExp(reFind),reReplace);}var reVar=/(.*?)(正则表达式\w+?able)(.+?)/gi;console.log(str.regexVariable(reVar,‘$1:):):)$2:)::)$3'));//退货://:):)::)regexVariable:):。

这些答案我都不清楚

简单的答案是:

var search_term = new RegExp(search_term, "g");
text = text.replace(search_term, replace_term);

例如:

$(“button”).click(函数){查找和替换(“Lorem”、“Chocolate”);查找和替换(“ipsum”,“冰淇淋”);});函数Find_andreplace(搜索_时间段,替换_时间段){text=$(“textbox”).html();var search_term=新RegExp(search_term,“g”);text=text.replace(搜索时间,替换时间);$(“textbox”).html(文本);}<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><文本框>Lorem ipsum</textbox><button>单击我</button>