【问题标题】:Laravel validation no space allowed for usernameLaravel 验证用户名不允许有空格
【发布时间】:2016-10-14 14:55:39
【问题描述】:

我在 laravel 验证请求中有一个小问题。我想拒绝带有foo bar 之类的空格的用户名。我只想让foobar 没有空格。现在我的规则是required|unique:user_detail,username。我应该使用什么规则?谢谢

【问题讨论】:

    标签: validation laravel


    【解决方案1】:

    你为什么不使用alpha_dashrule

    required|alpha_dash|unique:user_detail,username
    

    来自文档:

    验证中的字段也可能包含字母数字字符 作为破折号和下划线。

    而且它不允许有空格。

    【讨论】:

    • 例如,alpha 不允许使用下划线。
    • alpha_dash 可以工作,这完全取决于您要允许的字符。像这样的字符串:“(╯°□°)╯”也会失败 alpha_dash 验证。
    • 当然会。你读过 alpha_dash 文档吗? 正在验证的字段可能包含字母数字字符,以及破折号和下划线。
    • 自己试试 alpha_dash 不允许使用括号。
    【解决方案2】:

    您可以使用自己的自定义规则扩展验证器:

    Validator::extend('without_spaces', function($attr, $value){
        return preg_match('/^\S*$/u', $value);
    });
    

    然后就像任何其他规则一样使用:

    required|without_spaces|unique:user_detail,username
    

    查看有关自定义验证规则的文档:

    https://laravel.com/docs/5.2/validation#custom-validation-rules

    【讨论】:

    • 在规则中使用正则表达式而不是创建新的自定义验证。 'username' => 'required|regex:/^\S*$/u',
    【解决方案3】:

    您应该使用正则表达式进行验证。

    PHP:

    required|unique:user_detail,username,'regex:/\s/'
    

    【讨论】:

    • 谢谢!但应该是regex:/^\S*$/u
    【解决方案4】:

    您应该在验证中使用正则表达式。

    Laravel:

    'domain' => 'required|max:255|unique:users|regex:/(^[a-zA-Z]+[a-zA-Z0-9\\-]*$)/u',
    

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 2017-01-28
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 2020-01-19
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多