3

我需要实现一个输入过滤器来限制格式中的数字输入1234.35。也就是说,最多前四位.和两位小数。我正在使用这个正则表达式模式:

Pattern.compile("[0-9]{0,4}+((\\.[0-9]{0,2})?)||(\\.)?");

这可行,但是一旦我在编辑文本中输入一个数字并尝试编辑小数位前的值,我就无法编辑它们。我只能删除它们。

怎么了?

4

1 回答 1

2

根据你所说的,我认为你正在尝试做,我会使用这个正则表达式:

^(\d{0,4})(\.\d{1,2})?$

它匹配“0-4 位”,后面有或没有“一个小数点和两个数字”。如果有小数点,则后面必须有一位或两位数字。例如:5, 1234, 1234.56, .2, and.31都是有效的并且被表达式匹配,但是.123, 1234., 1234.567, 12345, and.不匹配。

或者,要允许以小数结尾的数字(如.1234.等),请使用以下修改:

^(\d{0,4})(\.(\d{1,2})?)?$
于 2012-06-15T19:21:01.450 回答