自定义验证规则 laravel
Custom rule for validation laravel
我制定了一个自定义规则来验证手机号码。有特定的模式和要求。
图案
[0-9]{3}-[0-9]{4}-[0-9]{4}
前三位数字应为以下数字之一:
010、020、030、040、050、060、070、080、090
下面是我的自定义规则代码。
App/Rules/MobileNumber.php
public function passes($attribute, $value)
{
$pattern = "/^\[0-9]{4}-[0-9]{4}-[0-9]{3}$/";
return preg_match($pattern, $value);
}
我的自定义验证器:
app/HTTP/Request/UserRequest.php
use App\Rules\MobileNumber;
......
//manipulate data before validation
public function validationData()
{
$this->merge([
'tel_number' => $this->tel_number_1.'-'. $this->tel_number_2.'-'.$this->tel_number_3,
]);
}
public function rules()
{
return [
//other rules here....
'mob_number' => 'required', new MobileNumber()
];
}
但是使用上面的代码验证不起作用。tel_number
没有到达 passes
方法来检查验证。
I.E 如果用户提供字母字符或符号,它们将被转发用于数据库保存方法。
所以我无法检查我的正则表达式是否正确。
如果有人能指出我在这里犯的错误,那将非常有帮助。还要确认我的正则表达式是否正确以通过验证。
我只能回答正则表达式验证的最后一点。
您将实施中的顺序改为 4-4-3,而不是 3-4-4 位。
序列 010, 020, 030, 040, 050, 060, 070, 080, 090 可以使用 0[1-9]0
匹配,你不应该转义 \[
否则你会匹配它从字面上看。
更新后的代码可能如下所示:
$pattern = "/^0[1-9]0-\d{4}-\d{4}$/";
我制定了一个自定义规则来验证手机号码。有特定的模式和要求。
图案
[0-9]{3}-[0-9]{4}-[0-9]{4}
前三位数字应为以下数字之一:
010、020、030、040、050、060、070、080、090
下面是我的自定义规则代码。
App/Rules/MobileNumber.php
public function passes($attribute, $value)
{
$pattern = "/^\[0-9]{4}-[0-9]{4}-[0-9]{3}$/";
return preg_match($pattern, $value);
}
我的自定义验证器:
app/HTTP/Request/UserRequest.php
use App\Rules\MobileNumber;
......
//manipulate data before validation
public function validationData()
{
$this->merge([
'tel_number' => $this->tel_number_1.'-'. $this->tel_number_2.'-'.$this->tel_number_3,
]);
}
public function rules()
{
return [
//other rules here....
'mob_number' => 'required', new MobileNumber()
];
}
但是使用上面的代码验证不起作用。tel_number
没有到达 passes
方法来检查验证。
I.E 如果用户提供字母字符或符号,它们将被转发用于数据库保存方法。
所以我无法检查我的正则表达式是否正确。
如果有人能指出我在这里犯的错误,那将非常有帮助。还要确认我的正则表达式是否正确以通过验证。
我只能回答正则表达式验证的最后一点。
您将实施中的顺序改为 4-4-3,而不是 3-4-4 位。
序列 010, 020, 030, 040, 050, 060, 070, 080, 090 可以使用 0[1-9]0
匹配,你不应该转义 \[
否则你会匹配它从字面上看。
更新后的代码可能如下所示:
$pattern = "/^0[1-9]0-\d{4}-\d{4}$/";