我需要将一个字符串与两个模式匹配,这两个模式都必须与字符串匹配。你可以把它想象成某种验证链。
下面代码中的模式只是示例。
<?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';
}