PHP preg_match“AND”运算符

时间:2014-03-06 11:05:14

标签: php regex preg-match

我使用“OR”运算符“|”匹配$ name变量

的单词的onle
$name = "one five six two";
if (preg_match('/(one|two)/i', $name)) {return true;}

如果这些单词在$ name里面,我应该使用什么操作符和preg_match有“AND”条件?

if (preg_match('/(two "AND" five)/i', $name)) {return true;}

5 个答案:

答案 0 :(得分:4)

如果您仍想使用正则表达式,则需要积极的前瞻:

if (preg_match('/^(?=.*one)(?=.*two)/i', $name)) {return true;}

不建议用于简单的东西(有点矫枉过正),而且它会因为更复杂的东西而变得混乱......

答案 1 :(得分:1)

我认为你只需要分开两个条件并使用&&如下

if(preg_match('/(two)/i', $name) && preg_match('/(five)/i', $name)) {return true;}

了解详情here

答案 2 :(得分:0)

if ( preg_match('/two/i', $name) && preg_match('/five/i', $name) ) {return true;}

答案 3 :(得分:0)

您可以在不使用正则表达式的情况下执行此操作:

if (strpos($name, 'one') !== false && strpos($name, 'two') !== false) {
   // do something
}

答案 4 :(得分:-1)

如果只匹配一个单词,请不要使用preg_match。与strpos相比,正则表达式使用更多的计算机资源。

如果您只想检查另一个字符串中是否包含一个字符串,请不要使用preg_match()。请改用strpos()strstr(),因为它们会更快。 (PHP.net)。

if (str_pos($name, 'two') !== false 
    && str_pos($name, 'five') !== false) {

    return true;
}