我使用“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;}
答案 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;
}