我可以在JavaScript中使用模板字面量替换正则表达式吗?
我有如下代码:
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');
但是并没有任何内容被剥离掉,所以我不确定是不是格式出了问题。
我可以在JavaScript中使用模板字面量替换正则表达式吗?
我有如下代码:
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');
但是并没有任何内容被剥离掉,所以我不确定是不是格式出了问题。
我能在 JavaScript 中使用模板字面量和正则表达式替换吗?
使用正则表达式字面量(例如/^(.*)&/g
)是不行的。模板字面量用于构建字符串,而正则表达式字面量不是字符串。
您可以使用模板字面量来构建正则表达式的模式,如下所示:
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const pattern = `[^${regex}/gi]$`;
const result = data.replace(new RegExp(pattern, 'g'), '');
或者您可以创建一个标记模板来为您构建正则表达式,例如:
rgx`[${regex}]` // returns new RegExp('..
例如:
// tagged template function
function rgx(str0, str1){
return new RegExp(`${str0.raw[0]}${str1}${str0.raw[1]}`, 'gi')
}
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(rgx`[${regex}]`, '');
console.log(result)
const regex = "~!@#$%&*()_^" ;
const data = "$88.10";
// suppose you want to remove these characters from the string
const result = data.replace(new RegExp(`[${regex}]`, 'gi'), '');
console.log(result)