0

Regexを使用してEditText値を検証する必要があります。 状態

  1. ユーザーは符号なし整数を入力できます
  2. ユーザーは浮動小数点値を入力できます。

2 つの異なる Pattern を使用してこれを達成しましたが、単一のRegexで両方をチェックする方法がわかりません。

私はこれを次の正規表現を使用しました

public boolean validFloatForString(String value) {
        String decimalPattern = "([0-9]*)\\.([0-9]*)";
        String integerPattern = "([0-9]*)";
        boolean match = Pattern.matches(decimalPattern, value)
                || Pattern.matches(integerPattern, value);
        System.out.println(match); // if true then decimal else not
        return match;
    }
4

3 に答える 3

1

あなたのパターンString decimalPattern = "([0-9]*)\\.([0-9]*)"は常に一致.しますが、integerPattern常に一致します。*は 0 以上を意味するからです。私は次のようなものを使用します

String pattern = "^([0-9]+(?:\\.[0-9]*)?)";

符号なし整数と浮動小数点数に一致します。

編集 1

符号なし浮動小数点数にも一致させるには、.

String pattern = "\\b([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)\\b";

^また、一致する文字列の先頭を意味する を単語の境界に置き換え\\bます。

于 2013-08-22T12:55:47.263 に答える
0

次のようなものを使用できます^[0-9]+(\\.[0-9]+)?$

上記により、文字列が 1 つ以上の数字で構成され、その後に任意で小数点と 1 つ以上の数字が続くことが保証されます。

于 2013-08-22T12:54:47.783 に答える
0

Android を使用している場合は、組み込みのバリデーターを使用して、たとえば InputType を設定できます。

EditText text = new EditText(this);
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
于 2013-08-22T12:54:15.667 に答える