正则表达式验证仅适用于单个字符

时间:2011-08-03 16:57:34

标签: java regex oop spring validation

我想检查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。 有人可以帮忙吗? 亲爱的丹尼尔

5 个答案:

答案 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次或以上。

^$分别表示该行的起始端。