千分隔符的正则表达式

时间:2016-04-28 04:42:58

标签: javascript regex

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

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

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

在我的情况下,我想让用户输入100,
输入可以用逗号结束,因为我在Keypress上验证输入,所以它应该允许100,(以逗号结尾)

3 个答案:

答案 0 :(得分:1)

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

希望它有所帮助。

答案 1 :(得分:1)

你可以这样做:

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

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

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

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

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

将匹配

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

虽然这仍然匹配1000,00

答案 2 :(得分:0)

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