作为可视化的一部分,我想向字符串中的任何数字(连续的数字串)添加数千个分隔符。它不需要考虑数字的上下文,例如
1234e+56789 Nokia 3210s cost $123456.7890 and my phone number is 123-4567-89012.
变成了
1,234e+56,789 Nokia 3,210s cost $123,456.7,890 and my phone number is 123-4,567-89,012.
我知道我可以反转字符串,用 $&,
替换 \d{3}(?=\d)
并再次反转它,但是有没有仅使用正则表达式(最好只有一个)来做到这一点的方法?
最佳答案
这与您的尝试几乎相同,只是相反并带有量词:
\d(?=(?:\d{3})+(?!\d))
并将其替换为 $&,
。
(?:\d{3})+
确保后面有 3 位数字的倍数,然后 (?!\d)
确保后面没有第四或第五位数字。
如果您想在 Notepad++ 中使用它,请确保升级到版本 6。
请注意,在 Notepad++ 中,您还可以使用lookbehind:
(?<=\d)(?=(?:\d{3})+(?!\d))
并将其替换为 ,
。
关于JavaScript 或 Notepad++ 正则表达式向任意文本添加千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273464/