1

我需要在 JAVA 中分析一个字符串,以确定它是否同时包含字母和数字。这就是我到目前为止所拥有的。变量 pass 是用户输入的最多 8 个字符/数字的字符串。

if(pass.matches("[^A-Za-z0-9]"))

{

System.out.println("Valid"); 

}

else

{

   System.out.println("Invalid");

}
4

2 回答 2

4

你的问题有点模棱两可。

如果您只想知道字符串是否包含字母或数字(但可能只有字母或只有数字)而没有别的,那么正则表达式:

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]*$");

一切顺利

于 2013-05-08T00:29:09.987 回答
1

我会用StringUtils.isAlphanumeric. 您的代码将如下所示:

if (StringUtils.isAlphanumeric(pass)) {
    //valid
} ...

你说你还想要最多 8 个字符。你可以这样做:

if (StringUtils.isAlphanumeric(pass) && StringUtils.length(pass) <= 8) {
    //valid
} ...

再次对长度使用 StringUtils 的好处是,如果pass为 null,您将不会得到 NullPointerException。或者,您可以只使用pass.length(),但您可能会遇到 NullPointerException。

于 2013-05-08T00:18:41.360 回答