PHP正则表达式检查是否包含特定单词但不包含其他

时间:2015-05-04 14:09:53

标签: php regex

如何使用PHP正则表达式检查,我的字符串变量$ str是否包含单词'cat',但不包含单词'dog'。

  • 案例1:$ str =“我的宠物:鹦鹉” - >输出:false
  • 案例2:$ str =“我的宠物:狗和猫” - >输出:false
  • 案例3:$ str =“我的宠物:猫” - >输出:true

我试过这个并且它有效,但我想知道是否有一个正则表达式来做它

$str = "My pet: dog and cat";
if (preg_match('/(\bdog\b)/', $str) && !preg_match('/(\bcat\b)/', $str)) echo 'TRUE';
else echo 'FALSE';

1 个答案:

答案 0 :(得分:3)

您可以使用消极和积极的前瞻:

^(?=.*?cat)(?!.*?dog).*$

要检查完整的字词,请使用\b

^(?=.*?\bcat\b)(?!.*?\bdog\b).*$

RegEx Demo