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