preg_match multiple pattern


preg_match multiple pattern

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

我尝试为以下内容创建模式:1.大人物2.小字3.编号4.特种炭

所有这些条件都必须包含我的字符串。我可以用检查条件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";
}

我怎么能那样做?

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

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