我想在 JavaScript 中创建一个 String.replaceAll() 方法,我认为使用正则表达式是最简洁的方法。但是,我不知道如何将变量传递给正则表达式。我已经可以执行此操作,将 "B" 的所有实例替换为 "A"。
"ABABAB".replace(/B/g, "A");
但我想做这样的事情:
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
但显然这只会替换文本“replaceThis”...那么我如何将此变量传递到我的正则表达式字符串中?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
正如 Eric Wendelin 提到的,你可以这样做:
这会产生
“正则表达式匹配。”。但是,如果 str1 是".",则会失败。您期望结果为“模式匹配正则表达式”,用“正则表达式”替换句点,但结果会是...这是因为,虽然
"."是一个字符串,但在 RegExp 构造函数中它仍然被解释为正则表达式,表示任何非换行符,表示字符串中的每个字符。为此,以下函数可能有用:RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); };然后你可以这样做:
产生
“模式匹配正则表达式”。您可以构造一个新的 RegExp 对象:
您可以通过这种方式动态创建正则表达式对象。然后你会做: