regex - 选择单选按钮时,Laravel 验证将正则表达式匹配到单个输入
问题描述
基本上有 3 个单选按钮 - ssn、cin、no。其中“no”是没有 ssn 或 ein 号码。单个输入文本字段允许他们根据他们的单选按钮选择分别在字段中输入他们的号码。
所以我试图根据他们的选择返回一个正则表达式。
Identifier 是单选按钮,identifier_num 是文本字段。
$validator = Validator::make($request->all(), [
'identifier' => ['required',Rule::in(['ssn', 'ein', 'no'])],
//'identifier_num' => 'required_if:identifier,sin,ein',
'identifier_num'=> Rule::RequiredIf(function(){
if(request()->input('identifier') == 'ssn'){
return preg_match("/^\d{3}-\d{2}-\d{4}$/", request()->input('identifier_num'));
}
elseif(request()->input('identifier') == 'ein'){
return preg_match("/^[1-9]\d?-\d{7}$/", request()->input('identifier_num'));
}
它正确地落入功能。我可以登录输入。但是有些我在文本字段中输入的内容。无论输入如何,都通过验证。对此有什么建议吗?
添加了更多上下文。
单选按钮
<input id="ssn" type="radio" name="identifier" value="ssn"/>
<input id="ein" type="radio" name="identifier" value="ein"/>
<input id="no" type="radio" name="identifier" value="no"/>
输入字段..
<input id="identifier_num" type="text" name="identifier_num" value=""/>
编辑:这似乎按预期工作,但不是很优雅。
'identifier' => ['required',Rule::in(['ssn', 'ein', 'no'])],
'identifier_num'=> Rule::RequiredIf(function()
{
if(request()->input('identifier') == 'ssn')
{
if(!preg_match("/^\d{3}-\d{2}-\d{4}$/", request()->input('identifier_num')))
{
$error = \Illuminate\Validation\ValidationException::withMessages([
'identifier_num' => ['This is not a valid Social Security Number'],
]);
throw $error;
}
}
elseif(request()->input('identifier') == 'ein')
{
if(!preg_match("/^[1-9]\d?-\d{7}$/", request()->input('identifier_num')))
{
$error = \Illuminate\Validation\ValidationException::withMessages([
'identifier_num' => ['This is not a valid Ein Number'],
]);
throw $error;
}
}
解决方案
推荐阅读
- python-3.x - 如何让 ZeroMQ 使用 UDP?
- asp.net-mvc - ServiceStack - System.Web.HttpContext.Current.Session 为空
- duplicates - 将列转换为多行数据到电源查询中具有多列的行-我在Power Query中需要这个
- python - 如何在 pandas df 中逐个单元格地操作数据?
- firebase - Flutter 在尝试使用 Dismissible ListView 删除 futurebuilder 中的项目时出现范围错误
- javascript - AWS Cognito - 如何自定义输入字段?
- opentext - SQLBase:有 lpad 功能吗?
- reactjs - React 不会更新 DOM 中的排序项
- tinymce - 在 TinyMCE 中如何处理上传到服务器然后在编辑器中删除的图像?
- docker - Jenkins 和 Docker 集成