我有一个 numberDecimal EditText
,我想使用正则表达式对其进行验证。在验证中,我想要的是:
在小数点之前,我要输入的最大数字是三位,并且数字不应以零开头,例如
2,23,342
等。小数点后,我要输入的最大位数是
.1
,.3
,.6
等。
所以我允许用户输入的数字是2.1
, 32.5
, 444.8
,564.9
等。
但在我的代码中,会发生什么:
它允许用户在小数点之前输入多于三位数的数字,例如
3456
,4444
,5555
之后不允许我输入小数点。它允许我
0
在小数点之前输入作为数字的开头。
那么为什么会发生这种情况,我使用的正则表达式有什么问题吗?如果有人知道,请帮我解决这个问题。
我用过的代码:
weightEditText.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s)
{
Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(s.toString());
if(!matcher.find())
{
weightEditText.setText(); // Don't know what to place
}
}
});