$pattern = "/^[a-zA-Z0-9]{1,30}$/";
$string = preg_replace("Description", "", $description);
if(preg_match($pattern, $string)){
//do some stuff
}
如果在字符串中找到“描述”,我将如何调整正则表达式模式失败。
答案 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
}