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

Java 正则表达式验证仅适用于一个字符,java,regex,oop,spring,validation,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.matche

我想检查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;
}
}

如果我在textfield中键入一个字符->在textfield中键入“a”->该方法将返回true,则此操作有效 textfield->method中的“ab”返回false。 有人能帮忙吗?
贝斯特·丹尼尔

您应该使用以下正则表达式:

[A-Za-z0-9]+

您应该使用以下正则表达式:

[A-Za-z0-9]+
“[a-zA-Z_0-9]”更改为
“[a-zA-Z_0-9]+”

+与该组中的“一个或多个”匹配。

“[a-zA-Z_0-9]”更改为
“[a-zA-Z_0-9]+”


+与该组的“一个或多个”匹配。

模式p=Pattern.compile(“[a-zA-Z_0-9]+”)

模式p=Pattern.compile(“[a-zA-Z_0-9]+”)

将模式从
[a-zA-Z_0-9]
更改为
^[a-zA-Z_0-9]*$
(对于0个或更多有效字符)或
^[a-zA-Z_0-9]+$
,如果要确保它们输入值

+
表示一次或多次重复

*
表示0次或更多次重复


^
$
分别表示行的开始和结束。

如果要确保输入值,请将模式从
[a-zA-Z_0-9]
更改为
^[a-zA-Z_0-9]*$
(对于0个或更多有效字符)或
^[a-zA-Z_0-9]+$

+
表示一次或多次重复

*
表示0次或更多次重复


^
$
分别表示行的开始和结束。

这是因为您使用的是
[]
。如果要捕获有限数量的字符,则需要修改任意数量或字符范围

[a-zA-Z_0-9 ]+ //1 or more characters
[a-zA-Z_0-9 ]{1,5} //1 - 5 characters

这是因为您使用的是
[]
。如果要捕获有限数量的字符,则需要修改任意数量或字符范围

[a-zA-Z_0-9 ]+ //1 or more characters
[a-zA-Z_0-9 ]{1,5} //1 - 5 characters

你忘了OP在正则表达式中的空格你忘了OP在正则表达式中的空格