我需要使用正则表达式验证 EditText 值。 条件:
我使用两种不同的模式实现了这一点,但我不知道如何在单个正则表达式中检查两者。
我在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;
}
答案 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]+)?$
。
以上将确保该字符串由一个或多个数字组成,可选后跟一个小数点和一个或多个数字。