【问题标题】:Regex use in LaravelLaravel 中的正则表达式使用
【发布时间】:2015-10-04 06:54:50
【问题描述】:

这是我的 Laravel 代码:

$validator = \Validator::make($val, [
                    'service_activity' => 'required|max:1000',
                    'inspired' => 'required',
                    'obstacles' => 'required|max:1000',
                    'working_on_acitivity' =>  array('required', 'regex:^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)$'),
                    'spend_time' => 'required',
                    'activity_impact' => 'required|max:1000',
                    'fund_raising' => 'required',
                    'raised_amount' => 'required|numeric',
                    'people_involved' => 'required|numeric',
                    'learned_from_experience' => 'required|max:1000',
                ],$messages);

我想对working_on_acitivity 中的字段使用正则表达式,但总是遇到同样的错误。我在 Laravel 文档中给出的数组中使用了正则表达式:

type":"ErrorException","message":"preg_match(): 没有找到结束分隔符'^'

【问题讨论】:

  • 也许是这样 - 添加 2 个斜线 'regex:/^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)$/' ?
  • 您需要在模式周围添加分隔符(例如/)。顺便说一句:'working_on_acitivity' => 'working_on_activity'
  • 您好。看起来您正在用小写字母书写所有标题。当编辑阅读您的问题时,错误可能会随着时间的推移而得到改善,因此如果您可以在标题开头使用大写字母,并且对于 Laravel 等品牌名称,这将节省一些未来的工作量。谢谢!
  • @splash58 谢谢,你解决了我的问题。

标签: php regex


【解决方案1】:

改变

'regex:^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)$'

'regex:#^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)$#'

使用# 作为分隔符。 (这是基于您谈论缺少分隔符的错误消息。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多