使用Javascript替换的模板文字?

时间:2018-08-15 17:13:05

标签: javascript regex

我可以在javascript替换正则表达式中使用模板文字吗?

我有这样的东西

const regex = "~!@#$%^&*()_" ;
const data = "$88.10";
const result = data.replace(`[^${regex}/gi]$`, '');

虽然什么都没有剥离,所以不确定我是否弄乱了格式。

2 个答案:

答案 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)