正则表达式验证匹配PHP中的pattern1和pattern2

时间:2014-08-28 06:45:29

标签: php regex

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

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

<?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
}
?>

2 个答案:

答案 0 :(得分:2)

在重新定义值之前,您可以使用正向前瞻来确保字符串匹配您想要的所有模式。类似的东西:

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

因此,对于您的示例,它将是

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

DEMO

答案 1 :(得分:0)

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

$pattern1 = "/^hello hi$/";
$pattern2 = "/^h?llo hi$/";
$pattern3 = "/^h[e?]llo hi$/";

if(preg_match($pattern3,$string))
{
  echo 'Y';
}else{
  echo 'N';
}