使用vanilla JavaScript的动态文本字符串中的上标美分

使用vanilla JavaScript的动态文本字符串中的上标美分,javascript,regex,superscript,Javascript,Regex,Superscript,我试图在某些价格上标出美分;价格是动态的,所以我不能在HTML中手动添加sup标签 据我所知,价格的格式应该是“3,99欧元”,但我不希望将来价格变成“3.99欧元”这样的价格会有任何变化 我想用一个正则表达式,比如 var-matcher=/(\.\124;\,)\ d{2}(?![\d])/; 退货价格。替换(匹配器“+”匹配器“+”)这应该可以做到:(\d[,。])(\d{2})(?!\d)。需要一个额外的捕获组,以允许在不被替换的情况下匹配更多的字符(积极查找的解决方法) var r

我试图在某些价格上标出美分;价格是动态的,所以我不能在HTML中手动添加sup标签

据我所知,价格的格式应该是“3,99欧元”,但我不希望将来价格变成“3.99欧元”这样的价格会有任何变化

我想用一个正则表达式,比如

var-matcher=/(\.\124;\,)\ d{2}(?![\d])/;
退货价格。替换(匹配器“+”匹配器“+”)这应该可以做到:
(\d[,。])(\d{2})(?!\d)
。需要一个额外的捕获组,以允许在不被替换的情况下匹配更多的字符(积极查找的解决方法)

var regex=/(\d[,.])(\d{2})(?!\d)/g;
var str=‘测试100,99欧元测试2.116.600,99欧元测试2,50欧元测试’;

log(str.replace(regex,$1$2'))非常感谢!这是惊人的,非常接近我需要的。唯一的问题是,对于1000或更大的数字来说,这似乎是失败的。还有什么办法可以解决这个问题吗?啊,完全跳过了更长的数字。修复了它。抱歉,我运行了这个程序来更好地了解它是如何工作的,它给了我一个警告,可能不是所有浏览器都支持“正向查找”功能。然后我在Firefox和Safari中测试了代码,发现除了Chrome之外,上标在任何地方都不起作用。有没有办法让它跨浏览器工作?再次感谢。JS不仅不支持lookbehind断言,而且也不支持可变宽度lookbehind断言。当然!在替换字符串中,可以使用
$
在正则表达式中插入捕获的字符。因此,
$1
是从
(\d[,.])
部分捕获的字符,
$2
是从
(\d{2})
部分捕获的字符。