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;
};