Android 输入过滤器模式为';不允许十进制
我希望用户能够输入以下数字。Android 输入过滤器模式为';不允许十进制,android,regex,string-formatting,android-input-filter,Android,Regex,String Formatting,Android Input Filter,我希望用户能够输入以下数字。 有效: ~0 ~0.00 ~12.34 ~301.7 ~4 无效 ~01 ~3.001 简而言之,它允许十进制数最多保留两位小数 这就是我一直想用的 Pattern mPattern = Pattern.compile("|(0|[1-9]+[0-9]*)(\\.[0-9]{1,2})?"); 当我尝试在字段中键入“.”时,它不会允许我 我认为问题在于,您的验证模式需要在输入时匹配输入。在您的情况下,只要您键入“.”,您的输入就无效。例如,如果您试图输入1.23,
有效:
~0
~0.00
~12.34
~301.7
~4 无效
~01
~3.001 简而言之,它允许十进制数最多保留两位小数 这就是我一直想用的
Pattern mPattern = Pattern.compile("|(0|[1-9]+[0-9]*)(\\.[0-9]{1,2})?");
当我尝试在字段中键入“.”时,它不会允许我 我认为问题在于,您的验证模式需要在输入时匹配输入。在您的情况下,只要您键入“.”,您的输入就无效。例如,如果您试图输入
1.23
,当您输入小数点时,您的输入将变为1.
,这与您的regexp不匹配
尝试将表达式中的
{1,2}
替换为{0,1,2}
,以允许尾随“.”。是否提供了允许数值和十进制值的字段类型?@hwnd您的意思是使用android:inputType=“numberDecimal”
?无论我是否在xml中声明,它的行为都是相同的。