繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM