Regex验证匹配PHP中的pattern1和pattern2


Regex validation matching pattern1 and pattern2 in PHP

我需要将一个字符串与两个模式匹配,这两个模式都必须与字符串匹配。你可以把它想象成某种验证链。

下面代码中的模式只是示例。

<?php
$pattern1 = "^hello hi$";
$pattern2 = "^h?llo hi$";
// form pattern that checks that both patterns match
$pattern3 = "/".??."/";
if(preg_match($pattern3,$string))
{
  //solved it
}
?>

我知道下面的代码是一个可能的解决方案,但我很想知道是否可以通过某种方式将模式连接在一起,用一个preg_match来完成。

<?php
$pattern1 = "/^hello hi$/";
$pattern2 = "/^h?llo hi$/";

if(preg_match($pattern1,$string) && preg_match($pattern2,$string))
{
  //solved it
}
?>

在检索值之前,您可以使用正向前瞻来确保字符串与您想要的所有模式匹配。类似于:

/^(?=PATH_1$)(?=PATH_N$).*/

因此,以你的例子来说,它将是

/^(?=hello hi$)(?=h.llo hi$).*/

DEMO

不确定这是你想要的,但:

$pattern1 = "/^hello hi$/";
$pattern2 = "/^h?llo hi$/";
$pattern3 = "/^h[e?]llo hi$/";
if(preg_match($pattern3,$string))
{
  echo 'Y';
}else{
  echo 'N';
}