首页 > 解决方案 > 这个正则表达式是什么意思 /^.*(?=.{4,5})(?=.*[az])(?=.*[AZ])(?=.*[0-9])。 *$/

问题描述

有人可以详细说明以下正则表达式:

if($pass == $re_pass) {
    //password validation
    $pattern_up = "/^.*(?=.{4,56})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/";

    if(!preg_match($pattern_up, $pass)) {
        $errPass = "Must be at lest 4 character long, 1 upper case, 1 lower case letter and 1 number exist";
    }
}

我想要实现的是检查输入的密码是否在 4 和 56 之间。我已经在代码中指定了它。但是,当我尝试时,它可以接受超过该范围。

我的问题是如何指定上限,我不想超过 56 个字符。如果你能更详细地阐述它,那么我可以更了解它。此代码不是我制作的。

谢谢,

我正在尝试在 php 中做注册页面

if($pass == $re_pass) {
    //password validation
    $pattern_up = "/^.*(?=.{4,56})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/";

    if(!preg_match($pattern_up, $pass)) {
        $errPass = "Must be at lest 4 character long, 1 upper case, 1 lower case letter and 1 number exist";
    }
}

标签: phpregex

解决方案


只需使用锚点:^.{4,56}$

^- 匹配字符串的开头

$- 匹配字符串的结尾

.{4,56}- 匹配任何字符至少 4 次,最多 56 次

演示

您可以在积极的前瞻中使用它:(?=^.{4,56}$)


推荐阅读