【发布时间】:2018-08-15 17:13:04
【问题描述】:
我可以使用带有 javascript 替换正则表达式的模板文字吗?
我有这样的事情
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');
虽然没有任何内容被剥离,所以不确定我是否只是弄乱了格式。
【问题讨论】:
标签: javascript regex
我可以使用带有 javascript 替换正则表达式的模板文字吗?
我有这样的事情
const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');
虽然没有任何内容被剥离,所以不确定我是否只是弄乱了格式。
【问题讨论】:
标签: javascript regex
我可以使用带有 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)
【讨论】:
如何先使用模板文字将模式构造为字符串,然后从字符串创建正则表达式模式?
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)
【讨论】: