【问题标题】:Laravel validator regex: validate all in comma delimited formatLaravel 验证器正则表达式:以逗号分隔格式验证所有内容
【发布时间】:2018-06-27 20:10:19
【问题描述】:

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

abs : xyz, fgh:abc {,.....}

我的正则表达式如下所示:

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

我用它来匹配 'fail ,ok:2' 上的 ,ok:2。它通过了,因为有一场比赛。 如果任何逗号分隔的值不是正确的“键:值”格式,我需要它失败。

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

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

【问题讨论】:

  • ^((,)*((\s?\w+:\d+)+))$^ 是我正在使用的,但值为 'fail ,ok:2' 它从那里通过是一场比赛。如果任何逗号分隔的值不是'key:value'格式,我需要它失败
  • 我的特定正则表达式引擎是 pne 使用的 PHP preg_match (因为我试图在 Laravel 正则表达式验证器模式中使用它

标签: php regex laravel validation


【解决方案1】:

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

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

Demo

这里的想法是,从开头 ^ 匹配到结尾 $ 重复概述的 key:value-pair 模式,带有可选的空格 - 用逗号分隔或点击结束位置。

【讨论】:

  • 谢谢 - 这太好了。感谢您更正问题格式 - 我很抱歉没有正确格式化它并且没有从一开始就进行拼写检查(:))。这是我对堆栈溢出的第一次询问,尽管使用了多年。我无法编辑我的问题,但您似乎可以 - 所以请随意更正拼写和可能的标题以使其对其他人有用(“pne”引擎 - 不正确 - 我的意思是说“使用的那个” - 它具有误导性但我无法纠正)。再次感谢。
  • @DmitryLesov 欢迎您只需点击edit 按钮。请accept回答。在这里,这个标签上的人可能会非常苛刻,关闭和拒绝任何没有及时解决的事情。
  • 完成。快速跟进问题:我该怎么做才能让它传递空字符串?
  • 没问题。有几种方法。可能最简单的方法是为这样的空字符串添加替代:^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$))+$|^$^(?:\s*\w+\s*:\s*\w+\s*(?:,\s*|$))+$|^\s*$,如果只允许空格。
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 2014-06-30
  • 2011-03-28
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多