如何使用PHP验证正则表达式

Mac*_*Mac 7 php regex validation

我希望能够验证用户输入的正则表达式,以检查它是否有效.我发现PHP的第一件事是filter_var使用FILTER_VALIDATE_REGEXP常量,但这并不是我想要的,因为它必须将正则表达式传递给选项,但我不是正则对抗任何东西,所以基本上它只是检查正则表达式的有效性.

但是你明白了,如何验证用户输入的正则表达式(与之匹配).

验证的例子,简单来说:

$user_inputted_regex = $_POST['regex']; // e.g. /([a-z]+)\..*([0-9]{2})/i

if(is_valid_regex($user_inputted_regex))
{
    // The regex was valid
}
else
{
    // The regex was invalid
}
Run Code Online (Sandbox Code Playgroud)

验证示例:

/[[0-9]/i              // invalid
//(.*)/                // invalid
/(.*)-(.*)-(.*)/       // valid
/([a-z]+)-([0-9_]+)/i  // valid
Run Code Online (Sandbox Code Playgroud)

Ali*_*xel 6

这是一个想法(演示):

function is_valid_regex($pattern)
{
    return is_int(@preg_match($pattern, ''));
}
Run Code Online (Sandbox Code Playgroud)

preg_match()返回模式匹配的次数.这将是0次(不匹配)或1次,因为preg_match()将在第一次匹配后停止搜索.

如果发生错误,preg_match()返回FALSE.

为了得到模式无效的原因,请使用preg_last_error.