Php 电子邮件和正则表达式的Laravel验证不起作用

Php 电子邮件和正则表达式的Laravel验证不起作用,php,regex,laravel,laravel-4,preg-replace,Php,Regex,Laravel,Laravel 4,Preg Replace,问题 我正在尝试使用Laravel内置验证来验证表单。我想确保电子邮件中只有一个.edu。但是,Laravel继续抛出一个preg_match():未找到结尾分隔符“/”错误。我听说这与管道分隔符而不是数组分隔符有关,但我不确定这是什么意思/如何修复它。下面是我的代码 $validator = Validator::make(Input::all(), array( 'email' => 'Required|Max:50|Email|Unique:

问题

我正在尝试使用Laravel内置验证来验证表单。我想确保电子邮件中只有一个.edu。但是,Laravel继续抛出一个
preg_match():未找到结尾分隔符“/”错误。我听说这与管道分隔符而不是数组分隔符有关,但我不确定这是什么意思/如何修复它。下面是我的代码

$validator = Validator::make(Input::all(), 
        array(
            'email' => 'Required|Max:50|Email|Unique:users|Regex:/(\.edu(\.[a-z]+)?|\.ac\.[a-z]+)$/',
            'first-name' => 'required|max:20|min:3|',
            'last-name' => 'required|max:30|min:3|',
            'username' => 'required|max:30|min:3|unique:users|',
            'city' => '',
            'state' => '',
            'password-init' => 'required|min:6|AlphaNum',
            'password-check', 'required|min:6|AlphaNum|same:password-init'
        )
    );
任何帮助都将不胜感激
谢谢

由于使用管道<代码> <代码>分隔不同的验证规则,当Laravel在正则表达式的中间看到一个管道时,会感到困惑。因此,打破“电子邮件”规则如下:

$validator = Validator::make(Input::all(), 
    array(
        'email' => array(
            'required',
            'max:50',
            'email',
            'unique:users',
            'regex:/(\.edu(\.[a-z]+)?|\.ac\.[a-z]+)$/'
        ),
        'first-name' => 'required|max:20|min:3|',
        ...
这就是在文档中谈论数组而不是管道时的含义: