php中的preg_match是什么?

问题描述 投票:0回答:1

我遇到了这段使用正则表达式来验证密码的 PHP 代码,但我无法理解它:


if(!preg_match('/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[!@#$%])[0-9A-Za-z!@#$%]{8,}$/', $password)){

我知道它正在检查密码中的某些条件,例如是否存在数字、小写和大写字母以及特殊字符,但我发现很难从整体上理解整个表达式。有人可以帮我分解并解释每个部分吗?

P.S.:我是一名网络开发人员,而不是设计师。 :)

php regex mysqli
1个回答
0
投票

用于匹配满足以下条件的密码:

  • 密码长度必须至少8个字符。
  • 密码必须至少包含一位数字。
  • 密码必须至少包含一个小写字母。
  • 密码必须至少包含一个大写字母。
  • 密码必须至少包含
    !@#$%\
    组中的一个特殊字符。
    ^
    $
    符号是分别匹配字符串开头和结尾的锚点。

(?=.\d)
(?=.[a-z])
(?=.[A-Z])
(?=.[!@#$%\])
是正向先行断言,如果字符串中的下一个字符分别是数字、小写字母、大写字母或特殊字符,则匹配。
[0-9A-Za-z!@#$%]
表示与集合中的任何数字、小写字母、大写字母或特殊字符匹配的字符类
!@#$%
{8,}
量词指定前一个子表达式必须至少出现 8 次。

© www.soinside.com 2019 - 2024. All rights reserved.