我在项目中使用以下正则表达式来表示密码字段。
/^(?=.*\d)(?=.*[~!@#$%^&*)(_+-:[}="`])(?=.*[a-z])(?=.*[A-Z]).{8,}$/
我的要求是允许至少 1大写 1小写 1号码 1特殊角色。
应该允许`〜!@#$%^& *)(_ + - :[} ="特殊字符。如果我输入其他字符则不允许。
但它允许其他字符如|\
等
我对正则表达不太了解。请帮帮我,我哪里出错了。??
非常感谢。
答案 0 :(得分:3)
问题是在-
之后的+
放置在您的角色类中,该角色位于中间且表现为+
即0x2b
和{{之间的范围1}}即:
。由此可以允许此范围内的所有字符。
您可以将0x3a
移动到字符类的结尾或开头,如下所示:
-
同样重要是将DOT(任何字符)最后更改为允许的字符集,如上所示。 RegEx Demo
答案 1 :(得分:2)
无论你想做什么,只想把它们放在方括号([])中,并带有帽子标志(^)
示例:
[^|][^/]
这不允许这些字符。
试试这个:
Gt%:_=yh^|\5%3f
答案 2 :(得分:2)
你需要转义特定于正则表达式的字符($,&,^,*,+,?,/,|,),(,],[,},{):
^(?=.*\d)(?=.*[\~\!\@\#\$\%\^\&\*\)\(\_\+\-\:\[\}\=\"\`])(?=.*[a-z])(?=.*[A-Z]).{8,}$
我通常只是逃避所有标点符号是安全的,但没有必要逃避#,=,:,