返回始终为字母数字的字符串值

时间:2012-08-18 08:03:56

标签: java string integer while-loop

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

String code = "";

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

return code;

2 个答案:

答案 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);