<?php
$subject = "PHP is the web scripting language of choice.";
$pattern = 'sssss';
if(preg_match($pattern,$subject))
{
echo 'true';
}
else
{
echo 'false';
}
?>
上面的代码给出了警告,因为字符串$pattern
不是有效的正则表达式。
如果我传递有效的正则表达式,那么它可以正常工作.....
如何检查$pattern
是否有效的正则表达式?
答案 0 :(得分:5)
如果Regexp出现问题,您可以编写一个抛出错误的函数。
(就像它应该在我看来一样。)
使用@
来抑制警告是不好的做法,但是如果用抛出的异常替换它就应该没问题。
function my_preg_match($pattern,$subject)
{
$match = @preg_match($pattern,$subject);
if($match === false)
{
$error = error_get_last();
throw new Exception($error['message']);
}
return false;
}
然后您可以使用
检查正则表达式是否正确$subject = "PHP is the web scripting language of choice.";
$pattern = 'sssss';
try
{
my_preg_match($pattern,$subject);
$regexp_is_correct = true;
}
catch(Exception $e)
{
$regexp_is_correct = false;
}
答案 1 :(得分:0)
使用===
运算符:
<?php
$subject = "PHP is the web scripting language of choice.";
$pattern = 'sssss';
$r = preg_match($pattern,$subject);
if($r === false)
{
// preg matching failed (most likely because of incorrect regex)
}
else
{
// preg match succeeeded, use $r for result (which can be 0 for no match)
if ($r == 0) {
// no match
} else {
// $subject matches $pattern
}
}
?>
答案 2 :(得分:-1)
你可以用try catch包装preg_match
,如果它抛出异常,则认为结果为false。
无论如何,你可以看看regular expression to detect a valid regular expression。