千位分隔符的正则表达式

Regular Expression for Thousand Separator

本文关键字:分隔符 正则表达式 千位      更新时间:2023-09-26

我创建了一个正则表达式来验证按键时的输入。正则表达式的问题在于它允许按顺序输入多个逗号。下面是正则表达式

"^''-?''d*(',''d{0,3})*(''.''d{0,2}?)?$"

它允许用户输入像 100 这样的值,,,,,我想停止。匹配应为 123,000.00

就我而言,我想允许用户键入 100,
输入可以以逗号结尾,因为我正在验证按键上的输入,所以它应该允许 100,(以逗号结尾)

你可以这样做:

^-?('d+,?)*('.'d+)?$

这将匹配带有复选标记的那个

100,000 √
100,,, 
100     √
100,    √
,100
100.00

这是另一个,因为我不明白你在评论中的意思:

^-?'d+(,'d+)*('.'d+)?$

将匹配

100,000 √
100,,, 
100     √
100,    
,100
100.00  √

虽然这仍然符合1000,00

由于这一行(',''d{0,3})*,您按顺序得到多个逗号。在这里,您说的是匹配 3 位或没有数字和逗号 0 或更多次。 ,,, 表示 1 个逗号和 0 位数字 3 次。您可以尝试使用此方法来解决您的问题:^-?'d+(?:,'d{3})*(?:[,.](?:'d{1,2})?)?$

希望对您有所帮助。

如果您不限制小数点后的数字数量(例如:2),则可以尝试此正则表达式^[0-9]{1,3}(,[0-9]{3})*('.[0-9]+)?$