パスワードの強度をチェックする正規表現パターンを作成しました。
(?=^.{8,15}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
ユーザーは、次の 4 つのカテゴリのうち少なくとも 3 つに由来する文字のパスワードを使用する必要があります。
- 少なくとも 1 つの大文字
- 少なくとも 1 つの小文字
- 少なくとも 1 つの数字
- 少なくとも 1 つの特殊文字/記号
注: また、最小長と最大長 {8,15} も強制します。
パターンはサーバー側の PHP スクリプトで正常に動作し、複数の javascript Regex-tester-tools (例: http://www.regular-expressions.info/javascriptexample.html ) でもテストしました。これまでのところ、すべてが完璧に見えます...
しかし、単純なExtjs textfield validator 内で使用している場合、 4つのカテゴリすべてを使用している場合、バリデータはTRUEのみを返します。
validator: function (value) {
var pattern =
'(?=^.{8,15}$)'+
'((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|' +
'(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|' +
'(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|' +
'(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*';
if (value.match(pattern)) {
return true;
} else {
return this.i18n.invalidPassword;
}
}
そして今、私はアイデアを使い果たしています...