指定开始结束时正则表达式不匹配

Posted

技术标签:

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

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

/^(\d4-(\d4)?)$/

我只想匹配这样的字符串

1998-
1998-2015

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

'release_year' => 'required|regex:/^(\d4-(\d4)?)$/'

没有其他内容应该匹配,并且 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)?)$/' ) );,请检查。 【参考方案1】:

在 Laravel 文档中:

regex:pattern

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

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

试试这个:

'release_year' => array('required', 'regex:/^(\d4-(\d4)?)$/')

【讨论】:

以上是关于指定开始结束时正则表达式不匹配的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式不分大小写匹配指定字符串

正则表达式 - 如果开始匹配则匹配结束

正则表达式——06位置匹配

匹配 XML 字符串的正则表达式在 C# 中具有开始和结束标记

正则表达式--位置匹配和组

正则表达式对象