我需要一个密码字段的正则表达式 .
要求是:
-
密码长度必须为8到20个字符
-
必须至少包含 one letter 和 one number 以及 !@#$%^&*()_+ 中的特殊字符 .
-
Should not start with a special character
我试过了
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,20}
它有效,但是如何限制特殊字符开始密码?此外,如果你有一个比上面提到的更有效的正则表达式,请建议 .
谢谢
1 回答
它很简单,只需在开头添加一个字符类
[A-Za-z\d]
确保第一个字符是字母或数字 .[A-Za-z\d!@#$%^&*()_+]{7,19}
将匹配最小7个最多19个字符 . 这是必需的,因为他先前的字符类将使用单个字符,使字符串中的字符总数最小为8,最大为20 .$
将正则表达式锚定在字符串的末尾 . 确保我们没有任何内容 valid passwordRegex Demo