JavaScript或Notepad ++正则表达式将千位分隔符添加到任意文本

时间:2013-08-16 12:35:37

标签: javascript regex notepad++

作为可视化的一部分,我想在字符串中的任意数字(连续的数字字符串)中添加数千个分隔符。它不需要考虑数字的上下文,例如。

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)替换$&,并再次反转它,但是有没有办法只使用正则表达式(最好只有一个)?

2 个答案:

答案 0 :(得分:3)

这与你的尝试几乎相同,只是反过来并使用量词:

\d(?=(?:\d{3})+(?!\d))

并将其替换为$&,

(?:\d{3})+确保后面有3位数的倍数,然后(?!\d)确保后面没有第四位或第五位。

如果要在Notepad ++中使用它,请确保升级到版本6.

请注意,在Notepad ++中,您还可以使用lookbehind:

(?<=\d)(?=(?:\d{3})+(?!\d))

并将其替换为,

答案 1 :(得分:1)

你可以使用这个表达式:

((?<=\d)\d{3}(?=\D|(?:\d{3})*(?:\D|$)))

并替换为,$1

lookbehind确保在我们匹配的3位数之前有一个数字。

我们匹配的3个数字是您之前想要逗号的“数千个”。

前瞻确保后面有一个非数字或一组三位数字。