我需要在 JAVA 中分析一个字符串,以确定它是否同时包含字母和数字。这就是我到目前为止所拥有的。变量 pass 是用户输入的最多 8 个字符/数字的字符串。
if(pass.matches("[^A-Za-z0-9]"))
{
System.out.println("Valid");
}
else
{
System.out.println("Invalid");
}
我需要在 JAVA 中分析一个字符串,以确定它是否同时包含字母和数字。这就是我到目前为止所拥有的。变量 pass 是用户输入的最多 8 个字符/数字的字符串。
if(pass.matches("[^A-Za-z0-9]"))
{
System.out.println("Valid");
}
else
{
System.out.println("Invalid");
}
你的问题有点模棱两可。
如果您只想知道字符串是否包含字母或数字(但可能只有字母或只有数字)而没有别的,那么正则表达式:
pass.matches("^[a-zA-Z0-9]+$");
将返回真。
如果您想检查它是否同时包含字母和数字,而没有其他内容,那么它会更复杂,但类似于:
pass.matches("^[a-zA-Z0-9]*(([a-zA-Z][0-9])|([0-9][a-zA-Z]))[a-zA-Z0-9]*$");
一切顺利
我会用StringUtils.isAlphanumeric
. 您的代码将如下所示:
if (StringUtils.isAlphanumeric(pass)) {
//valid
} ...
你说你还想要最多 8 个字符。你可以这样做:
if (StringUtils.isAlphanumeric(pass) && StringUtils.length(pass) <= 8) {
//valid
} ...
再次对长度使用 StringUtils 的好处是,如果pass
为 null,您将不会得到 NullPointerException。或者,您可以只使用pass.length()
,但您可能会遇到 NullPointerException。