我需要匹配两个模式的字符串,两个模式必须匹配字符串。你可以把它想象成某种验证链。
以下代码中的模式只是示例。
<?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
}
?>
答案 0 :(得分:2)
在重新定义值之前,您可以使用正向前瞻来确保字符串匹配您想要的所有模式。类似的东西:
/^(?=PATH_1$)(?=PATH_N$).*/
因此,对于您的示例,它将是
/^(?=hello hi$)(?=h.llo hi$).*/
答案 1 :(得分:0)
不确定这是你想要的但是:
$pattern1 = "/^hello hi$/";
$pattern2 = "/^h?llo hi$/";
$pattern3 = "/^h[e?]llo hi$/";
if(preg_match($pattern3,$string))
{
echo 'Y';
}else{
echo 'N';
}