【发布时间】:2020-07-24 18:35:20
【问题描述】:
我有一个输入 tel 类型字段。这是用于格式为x-xxxx-xxx 的本地手机号码。有了这个,我遇到了失效问题。即使我输入了八位数字,它也会给出数字验证错误。
验证规则
我尝试了多种验证方法,如下所示,但没有一种方法有效。
// without regex
'mobile' => 'nullable|digits:8',
// regex one
'mobile' => 'nullable|regex:/^([0-9\s\-\+\(\)]*)$/|digits:8',
// regex two
'mobile' => 'nullable|regex:/^\d{1}-\d{4}-\d{3}$/|digits:8',
输入标记
我正在使用inputmask js 插件,以备不时之需。
<div class="form-group"><label for="mobile">{{__('admin.user.profile.mobile')}}</label>
<input type="tel" class="form-control" id="mobile" name="mobile"
value="{{ isset($user) ? $user->profile->mobile : old('mobile') }}"
placeholder="{{__('admin.user.profile.mobile')}}" data-inputmask="'mask': '9-9999-999'">
@error('mobile')
<span class="invalid-feedback d-block" role="alert"><strong>{{ $message }}</strong></span>
@enderror
</div>
验证错误信息
The mobile must be 8 digits.
DD
所以在这里我可以理解原因,可能是发送格式的号码。那么现在我该如何进行验证呢?
array:14 [▼
"_token" => "U5F3BkiAryYkaz75R1oraUfcx3ydz6bv6Ac7mw7K"
"_method" => "PUT"
"email" => "super@test.com"
"password" => null
"password_confirmation" => null
"role" => "super"
"first_name" => "Katheryn"
"last_name" => "Jones"
"mobile" => "4-6655-499"
"city" => "Taylorbury"
"facebook" => "http://fritsch.com/numquam-repudiandae-consectetur-sequi-suscipit-numquam"
"twitter" => "http://jacobi.com/"
"youtube" => "https://dubuque.org/explicabo-autem-corporis-distinctio.html"
"instagram" => "https://www.franecki.com/eos-non-nostrum-quia-commodi-ex-totam"
]
问题:
如何验证固定数字和格式的手机号码?
【问题讨论】:
-
更改为输入数字或去掉验证中的数字,因为正则表达式为您提供了覆盖
-
但是如果没有正则表达式呢?这也给出了同样的错误。我也尝试过删除数字并设置 max:8 仍然无效。
-
是的,因为您将
-(基于您的正则表达式)添加到输入中。要通过验证的数字应仅包含数字。 -
@ChamaraAbeysekara 我明白,但如果我不像第一个例子那样使用正则表达式怎么办?如果我只使用
digits:8,那么它应该可以工作。不是吗?因为合而为一,我想修复数字/数字。我不想让用户输入超过 8 位数字。 -
@ChamaraAbeysekara 我已经用
dd更新了这个问题。我明白这个问题。它正在发送具有格式的数字。这就是为什么不通过验证,因为它不仅是数字,而且是破折号。那么,在这种情况下,如何使用格式强制电话总位数限制为 8?
标签: laravel laravel-validation