JavaScriptで、パスワードとして入力された文字が、
- 英小文字、英大文字、数字のみが使われていること。
- 英小文字、英大文字、数字が使われていること。
- 8文字以上であること。
という要件を全て満たしているかチェックしなければならなくなり、どうい風に書けばいいのかちょっと悩みました。
photo credit: alikins via photopin cc
悩んだ結果、以下のようにmatchの条件に正規表現を使って、条件に該当する文字を取り出し、該当有無で判定する方法にしました。
if (password.match(/[^A-Z|^a-z|^0-9]/g)) { alert("パスワードは、半角英数字で入力してください。"); } var lower = password.match(/[a-z]/g); var upper = password.match(/[A-Z]/g); var numeric = password.match(/[0-9]/g); if (!lower || !upper || !numeric) { alert("パスワードは、半角英大文字、半角英小文字、数字を使ってください。"); } if (password.length < 8) { alert("新応募者用パスワードは、8文字以上入力してください。"); }
出来上がると簡単な内容に思えるので、悩まずに書けるようになりたいです。