0

1 つのテキスト フィールド タイプのパスワードを検証しようとしていますが、パスワードを書き込もうとすると、検証が機能しません。検証用: minlength 6、maxlength 12、大文字、小文字、および数字

HTML

<tr>
    <td>Contraseña *</td>
    <td>
        <input type="password" name="password1" id="password1">
    </td>
</tr>

ジャバスクリプト

 $.validator.addMethod("password1", function (value, element) {
     return this.optional(element) || /^(?=.*\d)(?=.*[a-zA-Z]).{6,12}$/i.test(value);
 });

 $("#frmDatos").validate({
     errorContainer: contenedor,
     errorLabelContainer: $("ol", contenedor),
     wrapper: 'li',
     meta: "validate",
     rules: {
         password1: {
             required: true
         }
     },
     messages: {
         password1: "La contraseña no es válida"
     },
4

3 に答える 3

6

代わりにこれを試してください:

/^[a-zA-Z0-9]{6,12}$/.test(value)

正規表現パーツ:

# /           - Start regex
# ^           - Match the beginning of the string,
# [a-zA-Z0-9] - Followed by any character that's within the a-z, A-Z, or 0-9 range,
# {6,12}      - And there's between 6 and 12 of these characters,
# $           - Followed by the end of the string (So not followed by any other characters)
# /           - End regex.

3 つの要素すべてが PW に含まれている必要がある場合、最も簡単でおそらく最も読みやすい方法は次のとおりです。

$.validator.addMethod("password1", function (value, element) {
    return /^.{6,12}$/.test(value) && // The string is between 6-12 characters long,
                 /\d/.test(value) && // And contains a digit,
             /[A-Z]/.test(value) && // And contains a upper-case letter,
            /[a-z]/.test(value)    // And contains a lower-case letter.
});

この利点は、文字列が長さの要件に一致しない場合、残りの正規表現が評価されないことです。これは「短絡」演算子です。つまり、演算子の左側の値が の場合false、完全な操作を にすることはできないtrueため、右側は評価されません。

于 2013-02-06T13:01:06.533 に答える
1

これはすべきです:

/^(?=\w{6,12}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d).*/

仕組みの詳細については、こちらをご覧ください

http://www.asiteaboutnothing.net/regex/regex-lookarounds.html

この記事のものは最大長が 10 ですが、12 に変換するのは簡単です。

于 2013-02-06T13:26:25.940 に答える
1
jQuery.validator.addMethod("passcheck", function(value, element) {
     var upperCase= new RegExp('[A-Z]');
     var lowerCase= new RegExp('[a-z]');
     var numbers= new RegExp('[0-9]');
     return this.optional(element) || (value.match(upperCase) && value.match(lowerCase) && value.match(numbers) && value.length >=6 && value.length <=12);
}, "* Your password must be between 6 and 12 characters. It must contain a mixture of uppercase, lowercase, and digits");
rules:{
    password1: {
       required: true,
       passcheck: true
    }
},
于 2013-02-06T13:26:46.160 に答える