我正在尝试创建一个由六个字母数字字符组成的字符串。下面的代码在大多数情况下都可以正常工作,但在极少数情况下,一串六个字母字符可以通过,我如何确保返回的字符串始终是字母数字?
String code = "";
while(!code.matches("[a-zA-Z0-9]+$"))
{
code = Integer.toString((int) (Math.random() * Integer.MAX_VALUE), 36);
}
return code;
答案 0 :(得分:1)
我相信这个正则表达式应该确保字符串始终是字母数字(包含至少一个字母和一个数字)
(?=.*[0-9])(?=.*[a-zA-Z]).+$
答案 1 :(得分:0)
重复尝试可能是最简单的,但您必须检查它是否包含字母和数字。
String code;
do {
code = Integer.toString((int) (Math.random() * Integer.MAX_VALUE), 36);
if (code.length() > 6)
code = code.substring(0, 6);
} while(!code.matches(".*\\w.*") || !code.matches(".*\\d.*") || code.length() < 6);