【发布时间】:2012-05-06 20:38:23
【问题描述】:
我有一个 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
}
}
});
【问题讨论】:
标签: android regex android-edittext