jQueryでパスワードの強度判定

設定したパスワードの強度を判定する(短い/弱い/強い)モジュール jQuery版、プラグイン

PHP版をjQuery版に置き換え。

jQuery

$(function() { $('#pw').keyup(function(){ $(this).next('div').html(checkPassword($(this).val())); }); /** * checkPassword * @param {string} str */ function checkPassword(str) { var state = ''; // LESS 短いパスワード var less_flg = false; var count = str.length; if (count < 8) { less_flg = true; state = '短い'; } // WARK 弱いパスワード var weak_flg = false; if (less_flg == false) { // 連続したパターン 11111111 12121212 123123123 if (str.match(/^([0-9a-z]{1,3})\1+$/i)) { weak_flg = true; } else if (str.match(/^[0-9]+$/)) { num_flg = true; // 連続した数字 12345678 98765432 var num = []; var diff_num = []; for (var i = 0; i < count; i++) { num[i] = str.substr(i, 1); if (i > 0) { diff_num[i] = num[i] - num[i - 1]; if (i > 1) { if (diff_num[i] != diff_num[i - 1]) { num_flg = false; } } } } if (num_flg) { weak_flg = true; } } else if (str.match(/^[a-z]+$/)) { var alpha_flg = true; // 連続したアルファベット abcdefgh zxywvuts var dec = []; var diff_dec = []; for (var i = 0; i < count; i++) { dec[i] = str.substr(i, 1).charCodeAt(0); if (i > 0) { diff_dec[i] = dec[i] - dec[i - 1]; if (i > 1) { if (diff_dec[i] != diff_dec[i - 1]) { alpha_flg = false; } } } } if (alpha_flg) { weak_flg = true; } } if (weak_flg == false) { // 指定のキーワードにマッチ var ng_password = [ 'password', 'qwertyui' ]; $.each(ng_password, function(i) { if (str == ng_password[i]) { weak_flg = true; } }); } if (weak_flg) { state = '弱い'; } } // STRONG 強いパスワード var strong_flg = false; if (less_flg == false && weak_flg == false) { // 英数混在 10文字以上 a1b2c3d4e5 abcde12345 if (str.match(/^[0-9a-z]{10,}$/i) && str.match(/[0-9]+/) && str.match(/[a-z]+/i)) { strong_flg = true; state = '強い'; } } return state; } });

JavaScriptでは/^(?=.*[0-9])(?=.*[a-z])[0-9a-z]{10,}$/iが動作しない。

サンプル

jQuery Plugin

プラグイン作成しました。

jquery_plugin_password.zip

v 1.0.0 : Password Checker / jQuery Plugin 作成しました。

動作環境

jQuery 1.11.2, 2.1.3
Chrome 41, Firefox 36, Internet Explorer 11, Opera 28, Safari 5

詳細はZipに梱包されているファイルをご確認ください。

2014年3月に公開したPHP版をjQuery版に置き換え、プラグイン化したものです。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について