我需要使用Regex验证EditText值。 条件:
- 用户可以输入无符号整数
- 用户可以输入浮点值。
我已经使用两种不同的模式实现了这一点,但我不知道如何在单个正则表达式中检查这两个模式。
我使用了以下正则表达式
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;
}
最佳答案
您的模式 String DecimalPattern = "([0-9]*)\\.([0-9]*)"
将匹配 .
,而 integerPattern
将始终匹配。这是因为 *
表示 0 或更多。
我会使用类似的东西
String pattern = "^([0-9]+(?:\\.[0-9]*)?)";
匹配无符号整数和 float 。
编辑 1
也匹配以 开头的无符号 float 。
String pattern = "\\b([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)\\b";
我还用单词边界 \\b
替换了 ^
(表示要匹配的字符串的开头)。
关于java - 正则表达式检查 Android 中的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18380924/