正则表达式检查Android中的多个条件

时间:2013-08-22 12:47:42

标签: java regex

我需要使用正则表达式验证 EditText 值。 条件

  1. 用户可以输入无符号整数
  2. 用户可以输入浮点值。
  3. 我使用两种不同的模式实现了这一点,但我不知道如何在单个正则表达式中检查两者。

    我在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;
        }
    

3 个答案:

答案 0 :(得分: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,这意味着要匹配的字符串的开头,使用字边界{{1}}。

答案 1 :(得分:0)

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

EditText text = new EditText(this);
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

答案 2 :(得分:0)

您可以使用类似的内容:^[0-9]+(\\.[0-9]+)?$

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