Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel验证程序正则表达式:以逗号分隔格式验证所有_Php_Regex_Laravel_Validation - Fatal编程技术网

Php Laravel验证程序正则表达式:以逗号分隔格式验证所有

Php Laravel验证程序正则表达式:以逗号分隔格式验证所有,php,regex,laravel,validation,Php,Regex,Laravel,Validation,我正在努力使Laravel的正则表达式验证器验证以下格式的字符串:逗号分隔的键:值对 abs : xyz, fgh:abc {,.....} 我的正则表达式如下所示: ^((,)*((\s?\w+:\d+)+))$ ^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$))+$ 我用它来匹配'fail,ok:2'上的,ok:2。因为有一场比赛,所以它通过了。 如果任何逗号分隔的值不是正确的“key:value”格式,我需要它失败 我正在运行preg_match的PHP中使用这个正

我正在努力使Laravel的正则表达式验证器验证以下格式的字符串:逗号分隔的键:值对

abs : xyz, fgh:abc {,.....}
我的正则表达式如下所示:

^((,)*((\s?\w+:\d+)+))$
^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$))+$
我用它来匹配'fail,ok:2'上的
,ok:2
。因为有一场比赛,所以它通过了。 如果任何逗号分隔的值不是正确的“key:value”格式,我需要它失败

我正在运行
preg_match
的PHP中使用这个正则表达式(因为我试图在Laravel中将它用作正则表达式验证器模式)


我需要一个验证程序失败id任何逗号分隔的值都不是键:值对

如果输入字符串不包含正确的键:值对列表,则正则表达式将失败,如下所示:

^((,)*((\s?\w+:\d+)+))$
^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$))+$


这里的想法是,从头到尾匹配$,使用可选空格重复概述的键:值对架构-用逗号分隔或点击结束位置。

^(,)*(\s?\w+:\d+))$^是我使用的,但使用值“fail,ok:2”,因为存在一个匹配项,所以它将通过。如果任何逗号分隔的值不是“key:value”格式,我需要它失败我的特定正则表达式引擎是pne使用的PHP preg_匹配(因为我尝试在Laravel正则表达式验证程序模式中使用它谢谢-这太好了。感谢您更正问题格式-我为没有正确格式化和拼写检查而道歉(:)马上出发。这是我第一次询问堆栈溢出问题,尽管使用了多年。我不能编辑我的问题,但你似乎可以-所以请随意更正拼写和可能的标题,以使其对其他人有用(“pne”引擎-不正确-我的意思是说“使用的一个”-它具有误导性,但我无法更正)。再次感谢。@DmitryLesov如果欢迎您,请单击按钮。请回答。在这个标签上的人可能会非常严厉,接近并否决任何未及时解决的问题。完成。快速跟进问题:我该怎么做才能让它传递给空字符串?没问题。有几种方法。最简单的方法可能是为空字符串添加一个替换项,如下所示:
^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$)++$^$
^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$)++$^\s*$
,如果只允许空白。