是否可以在字符串模板中内插Javascript正则表达式匹配?

时间:2018-10-24 23:51:48

标签: javascript regex

例如...(此操作失败)

const currencyMap = {
  "$": "USD",
  "€": "EUR",
};

const r = '$100'.replace(/(\$)([0-9]*)/g, `${currencyMap[$1]}$2`);
console.log(r);

有没有办法使这种事情起作用? $1用于字符串但不用作键时可用。

2 个答案:

答案 0 :(得分:3)

不幸的是,没有,您必须使用替换功能:

NVL(SOME_USER_ID, '***NULL SENTINEL VALUE***')

还请注意,您可以使用const currencyMap = { "$": "USD", "€": "EUR", }; const r = '$100'.replace(/(\$)(\d*)/g, (_, $1, $2) => currencyMap[$1] + $2); console.log(r);代替\d,这使正则表达式更易于阅读。

如果您真的不需要第二组一些特殊的东西,您可以在对象中回显匹配项:

[0-9]

答案 1 :(得分:2)

好了,我知道了。 Replace可以将一个函数用作第二个arg来生成替换字符串。

const currencyMap = {
    "$": "USD",
    "€": "EUR",
};

const r = '$100'.replace(/(\$)([0-9]*)/g, (full, first, second) => {
    return `${currencyMap[first]} ${second}`;
});

console.log(r);