Regex 密码强度的正则表达式,带有除下划线以外的一个特殊字符
我有以下正则表达式: ^.*(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*-])(?=.*[A-Z])(?=.*[a-z]).*$ ^.*(?=^.{8,}$)(?=.*\d)(?=.[!@$%^&*-])(?=.[A-Z])(?=.[A-Z])*$ 我用它来验证Regex 密码强度的正则表达式,带有除下划线以外的一个特殊字符,regex,model-view-controller,Regex,Model View Controller,我有以下正则表达式: ^.*(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*-])(?=.*[A-Z])(?=.*[a-z]).*$ ^.*(?=^.{8,}$)(?=.*\d)(?=.[!@$%^&*-])(?=.[A-Z])(?=.[A-Z])*$ 我用它来验证 至少有一个字母 至少一个大写字母 至少一个号码 至少一个特殊字符 至少8个字符 但除此之外,我还需要限制下划线(\uu)。 如果我输入passwordPa$sw0rd,这是正确的验证,这是真的。 如果我输入Pa$\
至少有一个字母
至少一个大写字母
至少一个号码
至少一个特殊字符
至少8个字符 但除此之外,我还需要限制下划线(
\uu
)。
如果我输入passwordPa$sw0rd
,这是正确的验证,这是真的。
如果我输入Pa$\u sw0rd
这也是正确验证,这是错误的
问题是,当所有规则都得到满足时,正则表达式就通过了。我想要一个规则来限制上面的下划线
任何帮助都将是非常可观的。我认为您可以使用否定字符类
[^\u]*
来添加此限制(另外,删除初始的*
,它是多余的,并且第一个前瞻已经在模式的开头,无需重复^
,并且它是完全多余的,因为可以在结尾检查总长度限制):
看
您可以试试这个。*
在开始时没有用。请参阅演示
不应该有
\uu
?????每个需求都有一个正则表达式将使整个事情更容易编码、理解、更新和维护。您正在使用*
添加另一个前瞻性,这会降低性能。@Stribizev是的,但我觉得添加了一个显示另一种方式或新方法的答案od处理相同的事情,尽管性能不同,如果可以:)增加了知识kitty:)非常欢迎您。如果答案对您有效,请接受(向下箭头下方左侧的勾号)。
^(?=.*\d)(?=.*[!@#$%^&*-])(?=.*[A-Z])(?=.*[a-z])[^_]{8,}$
^(?=.*?\d)(?=.*?[!@#$%^&*-])(?=.*?[A-Z])(?=.*?[a-z])(?!.*_).{8,}$