EditText
正規表現を使用して検証したいnumberDecimalがあります。検証では、私が欲しいのは次のとおりです。
小数点の前に、入力したい最大桁は 3 桁であり、桁は
2,23,342
などのようにゼロで開始しないでください。小数点の後に、入力したい最大桁は
.1
、.3
、.6
などです。
したがって、ユーザーが入力できる番号は、、、、2.1
などです32.5
。444.8
564.9
しかし、私のコードでは、次のようになります。
ユーザーは、、のよう
3456
に小数点の前に 3 桁以上の数字を入力できます。その後、小数点を入力することはできません。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
}
}
});