例如......(这失败了)
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);
关于javascript - 是否可以在字符串模板中插入 Javascript 正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52979440/