0

我需要使用Regex验证EditText值。 条件

  1. 用户可以输入无符号整数
  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";

我还将^(表示要匹配的字符串的开头)替换为 word boundary \\b

于 2013-08-22T12:55:47.263 回答
0

如果您在 Android 上,您可以为此使用嵌入式验证器,例如设置 InputType:

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

你可以使用这样的东西:^[0-9]+(\\.[0-9]+)?$.

以上将确保字符串由一位或多位数字组成,可选地后跟一个小数点和一位或多位数字。

于 2013-08-22T12:54:47.783 回答