我想检查userInput是否没有特殊字符,这是我的代码:
public class ValidateHelper {
public boolean userInputContainsNoSpecialCharacters(String input){
Pattern p = Pattern.compile("[a-zA-Z_0-9 ]");
Matcher m = p.matcher(input);
boolean b = m.matches();
if (b)
return true;
else
return false;
}
}
如果我在文本字段中键入一个字符,这是有效的 - >文本字段中的“a” - >该方法返回true 文本字段中的“ab” - >方法返回false。 有人可以帮忙吗? 亲爱的丹尼尔
答案 0 :(得分:3)
将"[a-zA-Z_0-9 ]"
更改为"[a-zA-Z_0-9 ]+"
+匹配该组中的“一个或多个”。
答案 1 :(得分:3)
Pattern p = Pattern.compile("[a-zA-Z_0-9 ]+");
答案 2 :(得分:2)
这是因为您使用的是character class []
。如果您想要捕获有限数量,任何数量或范围的字符,您需要修改它。
[a-zA-Z_0-9 ]+ //1 or more characters
[a-zA-Z_0-9 ]{1,5} //1 - 5 characters
答案 3 :(得分:1)
您应该使用以下正则表达式:
[A-Za-z0-9]+
答案 4 :(得分:1)
将您的模式从[a-zA-Z_0-9 ]
更改为^[a-zA-Z_0-9 ]*$
(对于0个或更多有效字符)或^[a-zA-Z_0-9 ]+$
如果您想确保他们输入值
+
表示重复1次或更多次。
*
表示重复次数为0次或以上。
^
和$
分别表示该行的起始端。