我创建了一个正则表达式来验证按键上的输入。 正则表达式的问题是允许多个逗号按顺序输入。 以下是正则表达式
"^\\-?\\d*(\,\\d{0,3})*(\\.\\d{0,2}?)?$"
允许用户输入100 ,,,,,我想要停止的值。匹配应为123,000.00
在我的情况下,我想让用户输入100,
输入可以用逗号结束,因为我在Keypress上验证输入,所以它应该允许100,(以逗号结尾)
答案 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]+)?$