1

我正在尝试创建一个由六个字母数字字符组成的字符串。下面的代码在大多数情况下都可以正常工作,但在极少数情况下会通过六个字母字符的字符串,我如何确保返回的字符串始终是字母数字?

String code = "";

while(!code.matches("[a-zA-Z0-9]+$"))
{
    code = Integer.toString((int) (Math.random() * Integer.MAX_VALUE), 36);
}

return code;
4

2 回答 2

1

我相信这个正则表达式应该确保字符串始终是字母数字的(至少包含一个字母和一个数字)

(?=.*[0-9])(?=.*[a-zA-Z]).+$
于 2012-08-18T08:17:01.610 回答
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);
于 2012-08-18T08:11:37.767 回答