【发布时间】:2012-04-20 08:19:18
【问题描述】:
我希望能够验证用户输入的正则表达式,以检查它是否有效。我发现的第一件事是使用 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
}
验证示例:
/[[0-9]/i // invalid
//(.*)/ // invalid
/(.*)-(.*)-(.*)/ // valid
/([a-z]+)-([0-9_]+)/i // valid
【问题讨论】:
-
你能更明确地说一下
that matches against nothing的意思吗?它是一个空字符串? -
我的意思是没有变量,我没有传递任何东西来验证用户的正则表达式。
-
很抱歉再次提出这个问题,但如果你是
not passing anything to validate against the user's regex,你如何验证正则表达式?你在问题中说你不想检查有效性,那么你到底想检查正则表达式是什么? -
@pinouchon:OP 想要验证给定字符串是否是有效的 PCRE 模式(即:验证分隔符、转义序列、匹配组等)。
标签: php regex validation