当我为只允许两个字母两个数字和两个特殊字符创建正则表达式时,我必须面对问题。创建正则表达式实际上不是问题。但是当我更改字符的位置时,正则表达式显示不匹配。所以请帮助我如何解决这些问题。
[A-Za-z]{2}[0-9]{2}[!@#$%^&]{2}
这种类型的匹配最好通过展望来完成:
^(?=.*d.*d)(?=.*[A-Za-z].*[A-Za-z])(?=.*[!@#$%^&].*[!@#$%^&]).{6}$
(?= )
不会抓取任何字符,它只是向前看,因此您可以检查不同的条件,然后只有在所有前瞻条件通过时,最后才用一个简单的.{6}$
抓取它们。剩下的唯一条件是从开头(^
(到结尾($
(正好有6个字符。
当每个子模式重复时,您也可以这样做:
^(?=(?:.*d){2})(?=(?:.*[A-Za-z]){2})(?=(?:.*[!@#$%^&]){2}).{6}$