我可以在javascript替换正则表达式中使用模板文字吗?
我有这样的东西
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');
虽然什么都没有剥离,所以不确定我是否弄乱了格式。
答案 0 :(得分:3)
我可以在javascript替换正则表达式中使用模板文字吗?
使用正则表达式文字(即/^(.*)&/g
)不能。模板文字用于构建字符串,而正则表达式文字不是字符串。
您可以做的是使用模板文字来构建像下面这样的正则表达式的模式:
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const pattern = `[^${regex}/gi]$`;
const result = data.replace(new RegExp(pattern, 'g'), '');
或者,您可以创建Tagged template来为您构建正则表达式:
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)
答案 1 :(得分:0)
如何首先使用模板文字将模式构造为字符串,然后从字符串创建正则表达式模式?
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)