使用 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