適当な長さのランダム英数文字列を生成する
#!/ruby/bin/ruby numbers = ('0'..'9').to_a alphabets = ('a'..'z').to_a characters = numbers + alphabets length = rand(3) + 6 pass = String.new until (/[0-9]/ =~ pass and /[a-z]/ =~ pass) do pass = ( Array.new(length) do characters[rand(characters.size)] end ).join end p pass
1 行目は Ruby の実行ファイルの場所を指定する。Windows なら C:\Ruby\bin にあるのでこのままで動く。これを適当なファイル名(拡張子は .rb とする)で保存すればコマンドプロンプトでファイル名を打つだけで動作する。
長さは 6 〜 8 でランダム、数字とアルファベットの両方が含まれているものだけが 1 個生成され表示されます。大文字のアルファベットも使いたい場合は
upperAlphabets = ('A'..'Z').to_a characters = numbers + alphabets + upperAlphabets
とかやればいいです。含まれているかどうかのチェック方法は以下同文なので省略。
2012/05/08 追記 : Regexp#=~ を使えばもっと簡単に書けることが分かったので修正。ソースが大幅に圧縮されました。