[英]Is it possible to interpolate Javascript regex match in a string template?
例如......(这失败了)
const currencyMap = { "$": "USD", "€": "EUR", }; const r = '$100'.replace(/(\\$)([0-9]*)/g, `${currencyMap[$1]}$2`); console.log(r);
有没有办法让这类事情发挥作用? 在字符串中使用$1
可用,但不能作为键。
不幸的是,你不得不使用替换器功能:
const currencyMap = { "$": "USD", "€": "EUR", }; const r = '$100'.replace(/(\\$)(\\d*)/g, (_, $1, $2) => currencyMap[$1] + $2); console.log(r);
另请注意,您可以使用\\d
而不是[0-9]
,它会使正则表达式更好读。
如果你实际上不需要第二组特殊的东西,你可以回显对象中的匹配:
const currencyMap = { "$": "USD", "€": "EUR", }; const r = '$100'.replace(/[$€]/g, match => currencyMap[match]); console.log(r);
好的,我已经弄清楚了。 替换可以将一个函数作为第二个arg来生成替换字符串。
const currencyMap = {
"$": "USD",
"€": "EUR",
};
const r = '$100'.replace(/(\$)([0-9]*)/g, (full, first, second) => {
return `${currencyMap[first]} ${second}`;
});
console.log(r);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.