例如......(这失败了)

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/

10-11 13:43