【问题标题】:Laravel pattern validation pipe character issueLaravel 模式验证管道字符问题
【发布时间】:2012-10-04 05:30:11
【问题描述】:

使用 Laravel 框架,我需要根据一组有效值检查提交字段的值。

问题是 Laravel 使用 |用于分隔属于字段的验证规则的字符。

不起作用,它会抛出一个

"preg_match: 没有找到结束分隔符'/'":

'my_field' => 'match:/^(value1|value2|different value|yet another)$/'

如果\ 字符不起作用,在这种情况下如何转义| 字符?

【问题讨论】:

标签: regex validation laravel


【解决方案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 '|' 错误

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2019-01-27
    • 2019-02-07
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2020-06-30
    相关资源
    最近更新 更多