使用regexp进行Laravel字段验证
我正在制作一个API,但在使用指示顺序的参数发出请求时,我很难找到正确的验证规则 他们要求结果的顺序可以是给定数量的值。例如,假设可能的值为:name、postalcode和age 这种顺序可以是升序,也可以是降序,可能会产生如下请求:使用regexp进行Laravel字段验证,regex,laravel,validation,Regex,Laravel,Validation,我正在制作一个API,但在使用指示顺序的参数发出请求时,我很难找到正确的验证规则 他们要求结果的顺序可以是给定数量的值。例如,假设可能的值为:name、postalcode和age 这种顺序可以是升序,也可以是降序,可能会产生如下请求: https://www.example.com/api/v1/users?sort=name,-postalcode,-age 我试图找到正确的验证规则,但到目前为止,我还没有成功 我所面临的问题是-字符和,可能串联在一起,同时字段必须在一些可能的值中有一个合
https://www.example.com/api/v1/users?sort=name,-postalcode,-age
我试图找到正确的验证规则,但到目前为止,我还没有成功
我所面临的问题是-
字符和,
可能串联在一起,同时字段必须在一些可能的值中有一个合适的值。也就是说,我不知道如何组合规则:
$validation = Validator::make($request->all(),[
'sort' => 'sometimes|regex:/(^-?+(name|postalcode|age)+(,)?+(-)?){1,}/',
]);
我想规则应该是这样的:
- 可以有一个可选的
字符-
- 后跟以下值之一:
、name
或postalcode
age
- 后跟字符
(仅当后面有字符时),
- 所有这些都可以重复一次或多次
$validation=Validator::make($request->all()[
“排序”=>[
“有时”,
'正则表达式:/^((?:名称| postalcode |年龄))(?:,(?1))*$/'
],
]);
看
详情:
-字符串的开头^
-第1组:((?:姓名|邮编|年龄))
-可选的-?
-
-列出的单词之一(?:name | postalcode | age)
-逗号和第1组模式的零次或多次重复(?:,(?1))*
-字符串结束$
$validation=Validator::make($request->all()[
“排序”=>[
“有时”,
'正则表达式:/^((?:名称| postalcode |年龄))(?:,(?1))*$/'
],
]);
看
详情:
-字符串的开头^
-第1组:((?:姓名|邮编|年龄))
-可选的-?
-
-列出的单词之一(?:name | postalcode | age)
-逗号和第1组模式的零次或多次重复(?:,(?1))*
-字符串结束$
https://www.example.com/api/v1/users?sort[]=name&sort[]=-postalcot[]=-age
这将简化验证过程,我不想麻烦验证您当前的方式。我会有一个可接受的字段列表,只需忽略列表中未包含的任何发送选项。@shaedrich感谢您的注释,但我想这样做,以便用户可以尽可能方便地输入这些参数。@Peppermintology感谢您的提示,但我认为这不是一个好主意。认为查询可以以不同的写入顺序和可能的减号连接多个值。总的来说,组合的数量会非常多,这是你误解的。我不是建议您创建一个包含所有可能组合的列表,而是一个包含已接受的
字段名的列表,您可以使用这些字段名来比较传入的数据。如果它不在列表中,请忽略它,而不是抛出验证错误。改用数组怎么样:https://www.example.com/api/v1/users?sort[]=name&sort[]=-postalcot[]=-age
这将简化验证过程,我不想麻烦验证您当前的方式。我会有一个可接受的字段列表,只需忽略列表中未包含的任何发送选项。@shaedrich感谢您的注释,但我想这样做,以便用户可以尽可能方便地输入这些参数。@Peppermintology感谢您的提示,但我认为这不是一个好主意。认为查询可以以不同的写入顺序和可能的减号连接多个值。总的来说,组合的数量会非常多,这是你误解的。我不是建议您创建一个包含所有可能组合的列表,而是一个包含已接受的
字段名的列表,您可以使用这些字段名来比较传入的数据。如果它不在列表中,请忽略它,而不是抛出验证错误。