Jquery Validate Method letters,numbers and special character
我正在使用jquery validate验证我的密码字段。我想要什么:
1)密码必须至少包含一个大写字母
2)密码必须至少包含一个小写字母
3)密码必须至少包含一个数字
4)并允许特殊字符(!@#仅限$%&;*)。
这是我尝试过的,但它正在验证,即使我用一个大写字母和一个数字:
1 2 3 4
| $.validator.addMethod("letters_numbers_special", function(value, element) {
return this.optional(element) || /^(?:[a-zA-Z]|[a-zA-Z])[a-z0-9#$@!]+$/i.test(value);
//(?=.*[a-zA-Z\d].*)[a-zA-Z\d!@#$%&*]
},""); |
- 如果只允许但不需要特殊字符,请使用/^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)[a-zA-Z\d!@#$%&*]+$/.test(value)。或者,您希望列表中至少有一个特殊字符,并且允许虚拟地使用除换行符以外的任何字符?
- @ WiktorStribi?我最初的想法是使用否定的字符集,而不是匹配任何东西,但它似乎匹配太多。
- @令人难以忍受的是,你没有在regex101上正确测试我的模式,这是一个正确的regex小提琴。在现实生活中,没有人使用多行字符串作为密码。这是一把J小提琴。
- 啊,抱歉!因此,对注释进行了不同的格式化,并删除了
。我明白了,这就是我最初的想法所缺少的。好点。
- @无法忍受的远见卓识并没有消除任何东西。只是regex101并不是一个证明某个东西可以工作的地方,而是一个只展示模式如何工作的地方。
- 是的,我现在就给你听,吸取教训:)
在下面的两个模式中,lookaheads确保字符串中至少有一个小写字母、一个大写字母和一个数字。
如果不需要特殊字符,但允许使用特殊字符,则可以使用以下模式。
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9!@#$%&*]+$
试试看
比赛:
不匹配:
1 2
| donotmatchME!
apple2000@ |
如果还需要至少一个特殊字符,则可以使用以下模式:
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%&*])[a-zA-Z0-9!@#$%&*]+$
试试看
比赛:
1 2
| Matchme2018!
regexIScool1! |
不匹配:
1 2 3 4
| donotmatchME!
apple2000@
Gpa1
abc01A |
- 你真的需要一个正面的*吗?正如^?= **[-Z])?= **[-Z])?=.*[0-9])[A-ZA-Z0-9!"$%$&AM**"*$
- 我认为OP至少需要一个特殊的角色。
- 我明白了,我的问题是你是否需要一个*在捕捉组。?=([Z-])VS(?= *[AZ ]
- 好吧,试试看:)如果你不使用*操作符,那么lookahead就不会前进了。请看这里。
- 好吧-我想我们快到了。你在这里发布的答案中缺少*操作符…
- 他们在那里…这是堆栈溢出链接格式。点击链接。
- @无法忍受的长度不,我不希望用户至少放置一个secial字符,而是希望只允许一些字符,这样除指定字符之外的特殊字符将使验证错误。
- @ou amdev先生检查更新。
- @它在regex上工作,但在jquery上没有验证。请检查我上面更新的帖子!
- 模式是^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9!@#$%&*]+$。正则表达式已格式化。点击答案中的链接。
- 多谢了,它的工作,但如果用户还必须从指定的一个特殊的字符是不是很棒?安全性会更好吗?
- 不客气。是的,当然添加一个特殊字符会增加安全性。我最初的解决方案需要一个特殊的字符,但是你在之前的评论中说它不是必需的。
- @令人难以忍受的远见,你能把它恢复过来吗?我指的是所需的一个特殊角色?我必须在两个不同的地方使用它,这就是为什么我问这个问题。我会感谢你的努力。谢谢
- 你想要^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%&*])[a-zA-Z0-9!@#$%&*]+$吗?请看这里。(链接)
- 多谢了,这解决了问题!
- 不客气:)