使用 vanilla JavaScript 的动态文本字符串中的上标美分
Superscript cents in dynamic text string using vanilla JavaScript
我正在尝试在某些价格上标上美分;价格是动态的,所以我无法在 HTML 中手动添加 sup 标签。
据我所知,价格的格式应类似于“3,99 €”,但如果将来价格更改为“€3.99”之类的格式,我不希望出现任何问题。
我正在尝试使用像
这样的正则表达式
var matcher = /(\.|\,)\d{2}(?![\d])/;
return price.replace(matcher, '<sup>' + matcher + '</sup>');
但我还没有完全弄清楚如何只获取包含在上标标签之间的美分值。任何建议将不胜感激。
应该这样做:(\d[,.])(\d{2})(?!\d)
。需要一个额外的捕获组以允许匹配更多字符而不被替换(正后视的解决方法)。
var regex = /(\d[,.])(\d{2})(?!\d)/g;
var str = 'Test test test 100,99€ test 2.116.600,99€ test € 2,50 test.';
console.log(str.replace(regex, '<sup></sup>'));
解释:
(\d[,.]) | Capture a digit followed by "," or "."
(\d{2}) | Capture the two cents digits
(?!\d) | Ensure a digit doesn't follow the previous capture
Try it here
我正在尝试在某些价格上标上美分;价格是动态的,所以我无法在 HTML 中手动添加 sup 标签。
据我所知,价格的格式应类似于“3,99 €”,但如果将来价格更改为“€3.99”之类的格式,我不希望出现任何问题。
我正在尝试使用像
这样的正则表达式 var matcher = /(\.|\,)\d{2}(?![\d])/;
return price.replace(matcher, '<sup>' + matcher + '</sup>');
但我还没有完全弄清楚如何只获取包含在上标标签之间的美分值。任何建议将不胜感激。
应该这样做:(\d[,.])(\d{2})(?!\d)
。需要一个额外的捕获组以允许匹配更多字符而不被替换(正后视的解决方法)。
var regex = /(\d[,.])(\d{2})(?!\d)/g;
var str = 'Test test test 100,99€ test 2.116.600,99€ test € 2,50 test.';
console.log(str.replace(regex, '<sup></sup>'));
解释:
(\d[,.]) | Capture a digit followed by "," or "."
(\d{2}) | Capture the two cents digits
(?!\d) | Ensure a digit doesn't follow the previous capture