我正在尝试创建一个正则表达式以进行模式匹配(用于密码),其中字符串必须介于 8 到 30 个字符之间,必须至少有 2 个数字,至少 2 个字母(不区分大小写),至少 1 个特殊字符,并且没有空间。
我已经让空格和特殊字符匹配工作了,但是因为它们不需要是连续的,所以我被抛出了 2 个数字和 2 个字母。
即它应该匹配a1b2c$
or ab12$
or 1aab2c$
。
像这样的字母?
(?=.*[a-zA-Z].*[a-zA-Z]) // Not sure.
下面的这个字符串有效,但只有当 2 个字母是连续的并且 2 个数字是连续的..如果字母、数字、特殊字符交织在一起,它就会失败。
(?=^.{8,30}$)((?=.*\\d)(?=.*[A-Za-z]{2})(?=.*[0-9]{2})(?=.*[!@#$%^&*?]{1})(?!.*[\\s]))^.*