Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查字符串是否为有效的PCRE?_Php_Regex - Fatal编程技术网

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

Php 如何检查字符串是否为有效的PCRE?,php,regex,Php,Regex,我需要检查字符串是否是有效的正则表达式 有没有办法做到这一点而不出现性能问题 注意:我想在使用它之前检查它,preg_last_error()不是我想要的。最好的方法通常是尝试使用您的正则表达式引擎运行/编译它并检查错误。在您需要之前,我不会担心性能。建议的preg\u last\u错误对您不起作用,因为它只返回PCRE运行时错误,而不是编译错误-在后一种情况下,您得到的只是一个php警告(“编译失败”)。解决此问题的一种干净方法是安装,然后在try-catch块中编译模式: try {

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

有没有办法做到这一点而不出现性能问题


注意:我想在使用它之前检查它,preg_last_error()不是我想要的。

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

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

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

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

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

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

}

如果我找不到解决问题的真正办法,我会接受你的答案,因为这是更好的答案。嗯……我想我暂时还是坚持你的答案。