jquery - Jquery 验证和正则表达式
问题描述
我知道这个问题已经被问死了,但似乎没有一个答案有效,所以不知道是插件问题还是我的代码。我正在使用 JQuery Validate 插件并检查了正则表达式的文档,并且确定我的一切都是正确的。但是,当我输入 test1234 或 TEST1234 作为密码时,当我明确表示我想要 1 个大写字母、1 个小写字母、1 个数字和 8-12 个字符时,验证插件似乎接受了这个密码。具有讽刺意味的是,当我输入 7 个字符的密码时,它会触发,如果我只使用数字并匹配 8 个字符,它就会触发。
有人可以仔细检查我下面的代码是否正常?我还尝试了以下方法:
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,12}$
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,12}$
<!--
( # Start of group
(?=.*\d) # must contain at least one digit
(?=.*[A-Z]) # must contain at least one uppercase character
(?=.*\W) # must contain at least one special symbol
. # match anything with previous condition checking
{8,12} # length at least 8 characters and also maximum of 12
) # End of group
-->
$().ready(function () {
$.validator.addMethod("PASSWORD", function (value, element) {
return this.optional(element) || /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,12}$/i.test(value);
}, "Passwords are 8-12 characters with uppercase letters, lowercase letters and at least one number.");
// Validate signup form on keyup and submit
$("#cp").validate({
rules: {
new_pass1: "required PASSWORD",
new_pass2: {required: true, equalTo: "#new_pass1"}
},
});
});
解决方案
只需删除i
标志。'i' 标志启用不区分大小写的搜索。所以应该是:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,12}$/.test(value)
推荐阅读
- magento - 在 Magento 2 中的所有 URL 中添加斜杠
- java - 使用 OKHttp 发出 GET 请求时出现“无法执行 android:onClick 的方法”异常
- python - 逻辑错误 - 检查一个词是否可以由另一个词组成
- asp.net-core-mvc - 如何验证对 Piranha.WebApi 的调用?
- azure - 是否可以将公共 Github 存储库(或其中的几个文件)合并到我的 Azure Devops repro 和 Pipelines 中?
- c# - 编译器无法将 C# 类成员识别为列表
- css - 是否可以在 Angular 中使用 :host 和 Encapsulation.None 来设置样式?
- c# - 在 C# 属性中构建字典
- excel - 开发的带有密码保护的 VBA 代码 VBAProject 需要通过 VBA 代码更改为已知密码
- pandas - 按部分整数 Pandas 过滤