【问题标题】:Laravel 5.1 Creating custom validation rulesLaravel 5.1 创建自定义验证规则
【发布时间】:2015-09-15 12:58:24
【问题描述】:

在注册表单中,用户名只能包含 a-z A-Z 0-9 下划线、破折号和圆点。所以我在 AppServiceProvider 的 boot 方法中定义了一个自定义验证器,如下所示;

Validator::extend('valid_username', function ($attribute, $value, $parameters)
            {
                    return preg_match('[a-zA-Z0-9_\-\.]', $value);
            }

但验证永远不会通过。我做错了什么?

【问题讨论】:

    标签: php validation preg-match laravel-5.1


    【解决方案1】:

    看起来没问题,除了preg_match在模式的开头和结尾需要/,你还应该匹配字符串的开头/结尾,并告诉它匹配多个字符:

    Validator::extend('valid_username', function ($attribute, $value, $parameters)
    {
        return preg_match('/^[a-zA-Z0-9_\-\.]+$/', $value);
    }
    

    您当前的模式只会确认存在这些字符之一,而不是确认存在这些字符。

    【讨论】:

    • 现在它在所有情况下都通过了!
    • 你是什么意思?它是否通过了预期的情况,或者它是否通过了像“user name!”这样的用户名?
    猜你喜欢
    • 2016-01-13
    • 2017-04-11
    • 2018-02-18
    • 2012-01-01
    • 2019-02-12
    • 2016-11-22
    • 2021-12-24
    • 1970-01-01
    • 2016-01-23
    相关资源
    最近更新 更多