jQuery验证 - 密码必须包含大写和数字

Bar*_*rdr 2 javascript validation jquery

所以在我的注册表格中我有这个字段:

 <div class="form-group">
    <label for="RegisterModel_Password">Password</label>
    <input type="password" id="RegisterModel_Password" 
           name="RegisterModel.Password" class="form-control" 
           required="required" minlength="8"/>
</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用jQuery验证属性来确保密码至少包含8个字符.所以,我想检查密码是否包含大写和数字,如果没有,则字段无效.我下载了名为" pattern "的jQuery Validation插件的附加方法,并将她添加到head标签中.

我尝试按照以下方式执行此操作,但它没有奏效.

$("#formRegister").validate({
    rules: {
        RegisterModel_Password: {
            pattern: /^[a-zA-Z][0-9]/
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我认为模式是错误的,但我不确定使用是否正确.谢谢您的帮助.

Bar*_*rdr 8

正则表达的链对我来说太难了(我从来没有试过去学习它们).所以这是我的解决方案:

jQuery.validator.addMethod("passwordCheck",
        function(value, element, param) {
            if (this.optional(element)) {
                return true;
            } else if (!/[A-Z]/.test(value)) {
                return false;
            } else if (!/[a-z]/.test(value)) {
                return false;
            } else if (!/[0-9]/.test(value)) {
                return false;
            }

            return true;
        },
        "error msg here");
Run Code Online (Sandbox Code Playgroud)

简单地说,我就像一个属性一样使用它:

<input type="password" id="RegisterModel_Password" 
name="RegisterModel.Password" 
class="form-control" 
required="required" minlength="8" 
passwordCheck="passwordCheck"/>
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

  • 我认为这是比使用正则表达式更好的解决方案。如果浏览器不强制执行 `minlength` 属性,我仍然会添加一个 `value.length &gt;= 8` 测试以确保完整性。 (2认同)