将自定义正则表达式规则转换为 Laravel 验证器

mig*_*eja 3 php regex laravel laravel-5

我有多个表单(>20),我正在寻找使用正则表达式验证表单输入字段的方法。

我不想手动填充正则表达式来验证控制器,而是想创建一个新规则并调用 rull 进行验证。

以防万一,如果我需要更新正则表达式模式,我可以一次性完成,而不必在所有表单中手动完成。

我不确定如何将正则表达式模式添加到规则中。

我的步骤:

php artisan make:rule MobileNo
Run Code Online (Sandbox Code Playgroud)

我的正则表达式模式,

用于验证电话号码以及固定电话号码

`regex:/(^[0-9]+$)+/`
Run Code Online (Sandbox Code Playgroud)

标题验证:

regex:/(^[A-Za-z0-9@ ()%,:<>?*&-]+$)+/

请指导我如何实现它?

Mau*_*hah 8

命令执行后,make:rule您将看到规则文件夹下创建了一个文件。在该文件中,您必须定义如下规则

public function passes($attribute, $value)
{
    return preg_match('/(^[0-9]+$)+/', $value);
}
Run Code Online (Sandbox Code Playgroud)

在你的控制器中你可以做这样的事情

use App\Rules\MobileNo;

$rules = [
        'phone' => ['required', new MobileNo],
    ];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)