将表单输入与正则表达式进行比较

Compare a form input with a regex expression

我正在使用 Laravel Auth 进行身份验证。我需要将字段输入(Phone 数字)与验证器方法中的正则表达式进行比较。我怎样才能做到这一点。下面是我使用的方法代码,

(目前我正在硬编码我的号码“0312 1234567”我如何在这里使用正则表达式?)

public function validator(array $data)
{ 
    if($data['emailOrNumber'] == "03121234567") {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'emailOrNumber' => ['required', 'numeric','unique:usersNew,phone'],
            'password' => ['required', 'string', 'min:8'],
            'surname2' => ['required', 'string', 'max:255']
        ]);
    }
}

如果要检查正则表达式,可以使用正则表达式验证规则。

你可以使用

return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'emailOrNumber' => ['required', 'numeric','unique:usersNew,phone', 'regex:/(\+[0-9]{2})?[0-9]{10,12}/g'],
            'password' => ['required', 'string', 'min:8'],
            'surname2' => ['required', 'string', 'max:255']
        ]);

小提示,我不会将电子邮件或 phone 号码保存在数据库的同一列中。这是两个完全不同的东西,所以我会把它们保存在不同的列中。您始终可以将两列中的一列留空。

您可以在 https://laravel.com/docs/5.7/validation#rule-regex

上阅读有关此验证的更多信息