preg_match多重模式

时间:2016-05-11 13:36:19

标签: php pattern-matching preg-match

之前的问题解释了一些类似的问题,但我无法为我的问题实施解决方案。

我尝试为以下内容创建模式:  1.大字  2.小​​角色  3.数量  4. SpecialChar

所有这些条件必须包含我的字符串。 我可以通过以下方式检查条件1,2,3。

[0-9A-Za-z]

我可以通过以下方式检查条件号4(特殊字符)

[[:punct:]]

但我无法将这些组合用于工作:

$p = "aAbB4#"; //correct string

if(!preg_match('/([0-9A-Za-z]{4,50}|[[:punct:]])/',$p)){
      $p = "Not all credentinals are correct";
}

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

为此使用正向前瞻匹配,即将每个字符放入(?=)组:

if (!preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[[:punct:]]).{4,50}$/', $p)) {
    ...
}