这个问题已经有了答案:
preg_match(): Compilation failed: invalid range in character class at offset
4答
我使用laravel作为框架,并尝试使用自己的preg_match函数来验证表单。
以下是我的代码:
Validator::extend('alpha_num_spaces', function ($attribute, $value)
{
return preg_match('/^([-a-z0-9_-\s])+$/i', $value);
});
现在,我已经在生产服务器上运行了这个程序,它运行得很好,但是,在我的本地计算机上,我收到:
preg_match(): Compilation failed: invalid range in character class at offset 13
我的猜测与php版本的不同有关?但我完全是基于猜测。或者也许regex实际上有问题?
提前谢谢。
最佳答案
您需要使用:
preg_match('/^([-a-z0-9_\s])+$/i', $value);
或
preg_match('/^([-\w\s])+$/i', $value);
在角色类的中间有一个未转义的连字符。
连字符必须位于字符类的第一个或最后一个位置,否则应进行转义。此外,你已经有一个连字符在第一位,所以不需要再有它。
关于php - preg_match编译失败:字符类中的无效范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426645/