如何检查字符串是否是有效的PCRE?

时间:2011-08-16 16:58:01

标签: php regex

我需要检查字符串是否是有效的正则表达式。

有没有办法在没有性能问题的情况下做到这一点?

N.B:我想检查 BEFORE 使用它,preg_last_error()不是我想要的。

3 个答案:

答案 0 :(得分:2)

建议的preg_last_error对你不起作用,因为它只返回PCRE运行时错误,而不是编译错误 - 在后一种情况下,你得到的只是一个php警告(“编译失败”)。解决此问题的一种简洁方法是安装error-to-exception error handler,然后在try-catch块中编译模式:

try {
    preg_match($pattern, "...");
} catch(ErrorException $e) {
   // something is wrong with the pattern 
}

答案 1 :(得分:0)

最好的方法通常是尝试使用Regex引擎运行/编译它并检查错误。在你需要之前我不会担心性能。

答案 2 :(得分:0)

在php中我使用以下函数来测试pcre的有效性:

function BoolTestPregRegex($Regex)
{
    $Result = @preg_match("/$Regex/", '1234567890123');

    if ($Result === false)
        return false;
    else
        return true;

}