【发布时间】:2013-03-26 19:51:44
【问题描述】:
有没有办法做到这一点,而不使用 @preg_match 上的错误控制运算符? :)
因为 PHP 要求字符之间包含模式,所以我想这样做:
- 获取第一个字符。
-
查找该字符在字符串中的最后一次出现:
$rpos = strrpos($string, $string[0]); -
获取修饰符列表:
$mods = substr($rpos, strlen($string)); - Find out if there are any invalid modifiers in this list。如果有则返回 false,否则正则表达式似乎有效。
这个解决方案的可靠性如何?还有更好的吗?
【问题讨论】:
-
你能给出一个失败的例子字符串吗?
-
您可以使用带有选项 FILTER_VALIDATE_REGEXP 的 filter_var()
-
AnnaK:
/(/会通过您的测试,但不是有效的正则表达式,因为它包含不匹配的括号。还要记住,一些正则表达式可能是有效的,但会消耗不合理的时间或内存来运行。 -
FILTER_VALIDATE_REGEXP 真的有效吗?
-
否,FILTER_VALIDATE_REGEXP = "根据正则表达式验证值,Perl 兼容的正则表达式。"。除非建议使用
filter_var方法在 Wouter J 的答案中使用正则表达式。
标签: php regex validation