如何在 laravel 5.2 中验证电话号码?

新手上路,请多包涵

我想验证用户输入的电话号码,其中数字应该正好是 11 并以 01 开头,值字段应该只是数字。我如何使用 Laravel 验证来做到这一点?

这是我的控制器:

   public function saveUser(Request $request){
        $this->validate($request,[
            'name' => 'required|max:120',
            'email' => 'required|email|unique:users',
            'phone' => 'required|min:11|numeric',
            'course_id'=>'required'
            ]);

        $user = new User();
        $user->name=  $request->Input(['name']);
        $user->email=  $request->Input(['email']);
        $user->phone=  $request->Input(['phone']);
        $user->date = date('Y-m-d');
        $user->completed_status = '0';
        $user->course_id=$request->Input(['course_id']);
        $user->save();
       return redirect('success');

    }

原文由 User57 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 773
2 个回答

一种可能的解决方案是使用正则表达式。

 'phone' => 'required|regex:/(01)[0-9]{9}/'

这将检查输入是否以 01 开头,后跟 9 个数字。通过使用正则表达式,您不需要 numericsize 验证规则。

如果您想在其他地方重用此验证方法,最好创建自己的验证规则来验证电话号码。

文档:自定义验证

在您的 AppServiceProviderboot 方法中:

 Validator::extend('phone_number', function($attribute, $value, $parameters)
{
    return substr($value, 0, 2) == '01';
});

这将允许您在应用程序的任何地方使用 phone_number 验证规则,因此您的表单验证可以是:

 'phone' => 'required|numeric|phone_number|size:11'

在您的验证器扩展中,您还可以检查 $value 是否为数字和 11 个字符长。

原文由 SlateEntropy 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以使用这个:

         'mobile_number' => ['required', 'digits:10'],

原文由 Risheekant Vishwakarma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题