PHP正则表达式:结合preg_match和preg_replace

时间:2011-09-21 01:31:49

标签: php regex

$pattern = "/^[a-zA-Z0-9]{1,30}$/";
$string = preg_replace("Description", "", $description);

if(preg_match($pattern, $string)){
  //do some stuff
}

如果在字符串中找到“描述”,我将如何调整正则表达式模式失败。

3 个答案:

答案 0 :(得分:2)

你使用一种称为负前瞻的东西 - 零宽度断言。这意味着它检查字符串中的某些内容而不实际“吃掉”任何内容,因此断言后面的内容从断言开始的地方开始。否定前瞻意味着如果找到字符串,则正则表达式无法匹配。您可以使用(?!...)执行此操作,其中“...”是您想要避免的占位符。因此,在您的情况下,您要避免描述

$pattern = "/^(?!.*Description)[a-zA-Z0-9]{1,30}$/";

(?!.*Description)中,开头的.*用于确保描述不会出现在字符串中的任何位置(即任意数量的任何字符都可以来到描述之前,如果 Description 在某处,它仍然会失败)。请记住,这是零宽度,因此在检查而不是描述之后,它会再次返回原位,在这种情况下是字符串的开头。

答案 1 :(得分:0)

不要使用正则表达式。

if( strpos($string,"Description") === false) {
    // "Description" is NOT in the string
}

答案 2 :(得分:0)

您可以使用strpos

if (false === strpos($string, "Description"))
{
   // Description not found
}