Javascript 如何在匹配正则表达式中使用模板文字?

Javascript 如何在匹配正则表达式中使用模板文字?,javascript,regex,Javascript,Regex,我试图在正则表达式中使用变量,但遇到了问题。这是我的职责: const truncateNum = (num, place = 2) => { const matcher = `/^-?\d+(?:\.\d{0,${place}})?/`; const re = new RegExp(matcher); return num.toString().match(re)[0]; }; 运行此命令时,我会出现以下错误: Uncaught TypeError: Cannot read

我试图在正则表达式中使用变量,但遇到了问题。这是我的职责:

const truncateNum = (num, place = 2) => {
  const matcher = `/^-?\d+(?:\.\d{0,${place}})?/`;
  const re = new RegExp(matcher);
  return num.toString().match(re)[0];
};
运行此命令时,我会出现以下错误:

Uncaught TypeError: Cannot read property '0' of null

我做错了什么?

您的代码有一些问题

首先,当您将正则表达式定义为字符串时,它不需要//标记,反斜杠也需要双转义\\d+

第二个是,如果正则表达式不匹配,num.toString.matchre将返回null,因此您尝试在null[0]上执行数组查找时会遇到异常


问题在于元字符转义。放置此^\\-?\\d+?:\\.\\d{0,${Place}?在你的模板文字来解决问题。我明白。谢谢你的解决方案!
let truncateNum = (num, place = 2) => {
  const  matcher = `^-?\\d+(?:\\.\\d{0,${place}})?`; console.log(matcher);
  const  re      = new RegExp(matcher);
  const  match   = num.toString().match(re);
  const  result  = match && match[0] || '0'
  return result;
};