-2

次のパスワード強度要件の正規表現を取得しようとしています。

  • 8文字以上
  • 少なくとも1つの大文字
  • 少なくとも1つの数字(0-9)
  • 少なくとも1つの特殊文字(!、@、#、$、%、^、&、*、?、_、〜、-、(、))

jquery.validate.password.jsプラグインを使用して評価できるようにするには、これが必要です。

また、どの基準が欠落しているかに基づいてユーザーフィードバックを提供することは可能ですか?たとえば、ユーザーに大文字が含まれていない場合、ユーザーに通知するメッセージを吐き返すことはできますか?これらは、さまざまな検証メッセージを渡す方法を示す例を提供します。

var originalPasswordRating = $.validator.passwordRating;
$.validator.passwordRating = function(password, username) {
    if (password.length < 100) {
        return { rate: 0, messageKey: "too-short" };
    }
};

$.validator.passwordRating.messages = $.extend(originalPasswordRating.messages, {
    "too-short": "Your password must be longer than 100 chars"
});
4

3 に答える 3

4

一連の正規表現を実行して、結果を個別に保存したいようです。個人的には些細なことです。JavaScriptの場合:

var password = "P@ssw0rd";
var validLength = /.{8}/.test(password);
var hasCaps = /[A-Z]/.test(password);
var hasNums = /\d/.test(password);
var hasSpecials = /[~!,@#%&_\$\^\*\?\-]/.test(password);

var isValid = validLength && hasCaps && hasNums && hasSpecials;

http://jsfiddle.net/RichardTowers/cAuTf/

ルールがあっても、人々は非常に弱いパスワードを選択できることに注意してください。

于 2012-06-18T16:24:03.170 に答える
1

私はそのプラグインを使用したことがありませんが、このようなものがあなたのために働くはずだと私は信じています:

var originalPasswordRating = $.validator.passwordRating;
var upperCaseRegex = /[A-Z]+/;
var numberRegex = /[0-9]+/
var specialCharRegex = /[\!\@\#\$\%\^\&\*\?\_\~\-\(\)]+/;
$.validator.passwordRating = function(password, username) {
    if (password.length < 8) {
        return { rate: 0, messageKey: "too-short" };
    } else if(!password.match(upperCaseRegex)) {
        return { rate: 0, messageKey: "no-upper" };
    } else if(!password.match(numberRegex)) {
        return { rate: 0, messageKey: "no-number" };
    } else if(!password.match(specialCharRegex)) {
        return { rate: 0, messageKey: "no-special" };
    }

};

免責事項:私はこのコードのいずれもテストしていませんが、これはあなたを正しい方向に向けるべきだと信じています。

この例で作成した「messageKeys」を使用して、対応するメッセージを作成する必要があります...

于 2012-06-18T16:17:10.630 に答える
0

これを試して..

function validatePass(pswd) {

var validLength = /.{8,}/.test(pswd);
var hasCaps = /[A-Z]/.test(pswd);
var hasLower = /[a-z]/.test(pswd);
var hasNums = /\d/.test(pswd);
var hasSpecials = /[~!,@#%&_\$\^\*\?\-]/.test(pswd);

if (validLength){                   // VALIDO LA LONGITUD 8 O MÁS
    if (hasCaps){                   // VALIDO SI HAY MAYÚSCULAS
        if (hasLower){              // VALIDO SI HAY MINÚSCULAS
            if (hasNums){           // VALIDO SI HAY NÚMEROS
                if (hasSpecials){   // VALIDO SI HAY CARACTERES ESPECIALES
                    return 0;
                } else return 5;    // NO HAY CARACTERES ESPECIALES
            } else return 4;        // NO HAY NÚMEROS
        } else return 3;            // NO HAY MINÚSCULAS
    } else return 2;                // NO HAY MAYÚSCULAS
  } else return 1;                  // LA LONGITUD ES INFERIOR A 8
}

このようなパスワードを確認してください。

 var valid_str = validatePass(renew_pass);
    
 if (valid_str == 1){
      alert("Mínimo 8 caracteres");
                
 } else if (valid_str == 2){ // NO HAS UPPERCASE 
      alert("NO HAS UPPERCASE");
    
 } else if (valid_str == 3){ // NO HAS LOWERCASE 
      alert("NO HAS LOWERCASE");
        
 } else if (valid_str == 4){ // NO HAS NUMS
      alert("NO HAS NUMS");
        
 } else if (valid_str == 5) { // NO HAS SPECIAL CHARACTERS
      alert("NO HAS SPECIAL CHARACTERS");
    
 }
于 2021-12-29T10:44:51.283 に答える