1

6 文字の英数字の文字列を作成しようとしています。以下のコードはほとんどの場合問題なく動作しますが、まれに 6 文字の英字の文字列が通過することがあります。返される文字列が常に英数字であることを確認するにはどうすればよいですか?

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

この正規表現は、文字列が常に英数字(少なくとも1つの文字と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 に答える