【问题标题】:Regex validation letters, dots and dash Laravel正则表达式验证字母、点和破折号 Laravel
【发布时间】:2016-09-07 21:21:15
【问题描述】:

我有这个验证:

'users.first_name' => 'required|min:2|regex:/[A-Za-z. -]/|max:255',

为什么这个验证会通过这个名字:John[][]

【问题讨论】:

  • 请给我们minimal reproducible example,以便我们重现您的问题
  • @lonVasile 你需要在first_name中允许什么??
  • 任何字母、点和破折号。
  • 试试'users.first_name' => 'required|regex:/^[A-Za-z. -]{2,255}$/'

标签: php regex laravel


【解决方案1】:

cmets 中的某个人也指出了这个问题,/[A-Za-z. -]/ 你并不关心所有字符,但说如果正在验证的字段只有最少的字符,这对我来说就足够了。

要仅包含这些字符,您应该使用插入符号 ^$ 指定输入文本的开头和结尾:

regex:/^[A-Za-z. -]+$/

【讨论】:

  • 感谢您的回答。我对用户名有类似的要求,减去允许空格字符,我需要允许数字。因此,所有用户名都可以包含数字、大小写字母 a-z、下划线、点和破折号。这适用于 Laravel 5.4,这是最终结果:'username' => ['required', 'regex:/^[0-9A-Za-z.\-_]+$/', 'max:150'],
  • 谢谢@racl101。它仍然适用于 Laravel 7。就我而言,我声明了一个 Rule 类并在那里使用了你的正则表达式。我还考虑适当添加'min:3'
【解决方案2】:

使用Alpha dash validation

'users.first_name' => 'required|min:2|alpha_dash|max:255',

【讨论】:

  • alpha_dash - 正在验证的字段可能包含字母数字字符,以及破折号和下划线。 - 点和空格呢?
  • 哦!我的错。没看到。点。顺便说一句,我不知道为什么名字会包含一个点。
  • 父亲的首字母。
  • alpha_dash 也允许使用数字,名字可能也不使用。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
相关资源
最近更新 更多