仅针对字母的 laravel 验证规则

Posted

技术标签:

【中文标题】仅针对字母的 laravel 验证规则【英文标题】:laravel validation rule for only letters 【发布时间】:2016-11-30 14:42:01 【问题描述】:

我正在尝试添加一个验证规则以仅接受字母。我正在使用regex 规则,但它仍然无法正常工作。下面是我的代码:

    /**
     * Validate request/input 
     **/
    $this->validate($request, [
        'name' => 'required|regex:/^[\pL\s\-]+$/u|max:255|unique:users,name,'.$user->id,
        'email' => 'required|email|max:255|unique:users,email,'.$user->id,
    ]);

每当我输入像Foo Foo 这样的名字时,它仍然可以成功注册。

知道我做错了什么吗?

【问题讨论】:

试试'name' => array('required','regex:/^[\pL\s-]+$/u', 'max:255', 'unique:users,name,'.$user->id), @WiktorStribiżew 没有用。 如果你删除/u?只需使用'regex:/^[\pL\s-]+$/'? @WiktorStribiżew 没有用.... 一切正常,非常感谢@WiktorStribiżew 【参考方案1】:

我认为你的正则表达式失败了,我在 Regexr 上尝试过,但无法正常工作,试试这个:

'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name,'.$user->id,

让我知道你过得怎么样。

这里只有正则表达式:^[a-zA-Z]+$

【讨论】:

有趣,我刚刚注意到你在结尾处连接:$user->id,请问你为什么要这样做,因为 Regexr 显示这个正则表达式正在工作:/ 我在错误的视图/控制器 lmfaoooo 下工作,这有效。 ^.^ 它发生了。不错的收获:p 注意:字面上只支持字母字符串,不允许有空格。例如,“Börje Henriksson”会导致验证失败。【参考方案2】:

根据laravel documentation,您可以使用:

alpha 用于完全字母字符 alpha_dash 用于字母数字字符,以及破折号和下划线,最后是 alpha_num 用于完全字母数字字符。

【讨论】:

注意:不支持 UTF-8 的规则 @PatricNox 你可以自己做帮手,搜索一下我已经在 Github 上回答过了,你只需要知道你的字母表

以上是关于仅针对字母的 laravel 验证规则的主要内容,如果未能解决你的问题,请参考以下文章

仅当值不为空时,Laravel 才请求验证规则?

Laravel 表单验证集规则,例如前两个字符是字母,后四个字符是数字,例如 AB1234

Laravel 有时验证规则

Laravel 密码验证规则有错误

Laravel 5.4 有时验证规则不起作用

Laravel 中正则表达式规则的自定义验证消息?