密码验证的正则表达式,仅限特定字符
密码验证的正则表达式,仅限特定字符
这个问题已经有了答案:
我正在尝试创建一个密码验证的正则表达式。以下是要求。
- 最小长度为8。
- 至少有一个大写字母。
- 至少有一个小写字母。
- 至少有一个数字。
- 允许使用的字符为!@#$%^&*?_~()-,0个或更多个。
- 允许使用a-z。
- 允许使用A-Z。
- 允许使用0-9。
这是我迄今为止的表达式:
^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*?_~()-]*).*$
这个表达式大部分都是有效的,除了我需要它只允许5-9这些项目。现在它将允许未指定的字符,例如 +=
。
如何修改这个表达式,只允许第5-9个项目,不允许其他字符?
admin 更改状态以发布 2023年5月24日
你可以将RegExp
分成离散部分,添加或删除所需部分,使用Array.prototype.every()
,在函数中包含&&!/[+=]/.test(str)
,以及输入字符串的 .length
属性。
var matches = [/[A-Z]/, /[a-z]/, /\d/, /[!@#$%^&*?_~()-]/]; var str = "Ab0!#?~_"; var pw = matches.every(function(re) { return re.test(str) && !/[+=]/.test(str) }) && str.length === 8; console.log(pw);