我想用JavaScript创建一个String.replaceAll()方法,我认为使用正则表达式将是最简洁的方法.但是,我不知道如何将变量传递给正则表达式.我已经可以这样做了,它将用"A"替换"B"的所有实例.

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

但我想做这样的事:

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

但是很明显,这只会替换文本"replaceThis"……那么我如何将这个变量传递给我的正则表达式字符串呢?

推荐答案

您可以构造一个新的RegExp对象,而不是使用/regex\d/g语法:

var replace = "regex\\d";
var re = new RegExp(replace,"g");

可以通过这种方式动态创建regex对象.然后你会做:

"mystring1".replace(re, "newstring");

Javascript相关问答推荐

事件错误:类型错误:无法读取未定义的属性(读取stopPropagation)

React对话框模式在用户单击预期按钮之前出现

在JavaScript中检索一些文本

为什么JavaScript双边字符串文字插值不是二次的?

如何解决这个未能在响应上执行json:body stream已读问题?

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

格式值未保存在redux持久切片中

我的角模板订阅后不刷新'

还原器未正确更新状态

Reaction Native中的范围滑块

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

我在Django中的视图中遇到多值键错误

Angular 形式,从DOM中删除不会删除指定索引处的内容,但会删除最后一项

将相关数据组合到两个不同的数组中

ngOnChanges仅在第二次调用时才触发

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

每隔3个项目交替显示,然后每1个项目交替显示

在ChartJS中使用spanGaps时,是否获取空值的坐标?

如何压缩图像并将其编码为文本?