一尘不染

PHP正则表达式,用于强大的密码验证

php

我已经在网上看到以下正则表达式。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

仅当字符串:

   * contain at least (1) upper case letter
   * contain at least (1) lower case letter
   * contain at least (1) number or special character
   * contain at least (8) characters in length

我想知道如何转换此正则表达式,以便将字符串检查为

* contain at least (2) upper case letter
* contain at least (2) lower case letter
* contain at least (2) digits
* contain at least (2) special character
* contain at least (8) characters in length

好吧,如果它至少包含2个大写,小写,数字和特殊字符,那么我就不需要8个字符的长度。

特殊字符包括:

`〜!@#$%^&*()_- + = [] \ | {} ;:’“。,/ <>?


阅读 320

收藏
2020-05-29

共1个答案

一尘不染

适应该正则表达式的最佳方法是将其剔除并编写一些代码。所需的正则表达式非常长且复杂,编写后两小时您将无法阅读。等效的PHP代码将很乏味,但是至少您将能够理解所编写的内容。

顺便说一句,这并不意味着对你的抨击。在大多数情况下,正则表达式几乎不适合密码强度验证,但是您的要求比平常更复杂,这是不值得的。另外,您发布的正则表达式是胡扯。永远不要相信您在网上发现的正则表达式。或任何代码,对此。或者,
任何东西 。:-/

2020-05-29