【问题标题】:Regex not matching when start end specified指定开始结束时正则表达式不匹配
【发布时间】:2016-02-06 06:06:22
【问题描述】:

我在 PHP 中有以下正则表达式

/^(\d{4}-(\d{4})?)$/

我只想匹配这样的字符串

1998-
1998-2015

我在 laravel 验证中使用它,如下所示:

'release_year' => 'required|regex:/^(\d{4}-(\d{4})?)$/'

没有其他内容应该匹配,并且 number 应该是 4 位数字。但它似乎不起作用。

【问题讨论】:

  • 它正在工作。在演示中添加多行标志。您必须检查代码中的正则表达式,而不仅仅是在正则表达式演示站点上。
  • 试试$rules = array('release_year' => array('required|"match:/^([0-9]{4}-([0-9]{4})?)$/"'));
  • Method [validate"match] does not exist.
  • 还是同样的错误:Method [validate"match] does not exist.
  • 这适用于以前的人:$rules = array( 'release_year' => array( 'required', 'Regex:/^([0-9]{4}-([0-9]{4})?)$/' ) );,请检查。

标签: php regex laravel laravel-5


【解决方案1】:

在 Laravel 文档中:

regex:pattern

验证中的字段必须与给定的正则表达式匹配。

注意:使用正则表达式模式时,可能需要指定 数组中的规则而不是使用管道分隔符,特别是如果 正则表达式包含管道字符。

试试这个:

'release_year' => array('required', 'regex:/^(\d{4}-(\d{4})?)$/')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2017-09-06
    • 2019-08-10
    • 2012-04-14
    相关资源
    最近更新 更多