我正在尝试使用此正则表达式
.*[!@#$%^&*()].*[0-9]|[0-9].*[!@#$%^&*()].*
使我的密码至少有1个特殊字符和1个数字(它确实如此)。但我也试图让它像mike1@
这样的密码。
如何修改它以便它也需要这样的字母?
答案 0 :(得分:4)
最好使用lookaheads
执行此操作。
^(?=.*[!@#$%^&*()])(?=.*[0-9])(?=.*[a-zA-Z]).*$
您的方法存在的问题是,您必须涵盖所有可能的组合,其中首先是一封信,或者首先是一个数字。使用lookahead
0 width assertions
只是一种检查,如果它没有一个special character
或number
或letter
,我们就会失败正则表达式。
(?=.*[a-zA-Z])
^^ ^^^^^^^
前瞻简单地指出,为了通过这个正则表达式,应该至少有一个letter
。
编辑:
^(?=.*[!@#$%^&*()])(?=.*[0-9]).*$
如果不存在字母约束,请使用此选项。