Laravel 模式验证管道字符问题
Posted
技术标签:
【中文标题】Laravel 模式验证管道字符问题【英文标题】:Laravel pattern validation pipe character issue 【发布时间】:2012-10-04 05:30:11 【问题描述】:使用 Laravel 框架,我需要根据一组有效值检查提交字段的值。
问题是 Laravel 使用 |用于分隔属于字段的验证规则的字符。
这不起作用,它会抛出一个
"preg_match: 没有找到结束分隔符'/'":
'my_field' => 'match:/^(value1|value2|different value|yet another)$/'
如果\
字符不起作用,在这种情况下如何转义|
字符?
【问题讨论】:
github.com/laravel/laravel/pull/1139 【参考方案1】:答案本质上是,如果您像尝试那样在一个字符串中指定所有规则,则不能使用管道。 m.buettner 提到的拉取请求已关闭。但是,Tayler Otwell 提到了您可以使用的另一种方法:在数组中指定规则。这方面的一个例子是:
$rules = array(
'field' => array('size:5', 'match:/foo|bar/')
);
【讨论】:
太棒了!我不知道这种替代方法对我来说比摸索长字符串要好得多。 它救了我!在 laravel 4 中 当你退后一步看的时候很明显 |用于分隔规则,但不是当您只关注regex:/value1|value2/
时 |已经在使用中!
比官方文档好!【参考方案2】:
使用 array() 后,正则表达式模式需要用 /.../ 括起来,以避免 preg_match(): Unknown modifier '|' 错误
【讨论】:
以上是关于Laravel 模式验证管道字符问题的主要内容,如果未能解决你的问题,请参考以下文章