【问题标题】:Laravel - validate only digits with fixed length and required spaceLaravel - 仅验证具有固定长度和所需空间的数字
【发布时间】:2018-12-19 05:49:18
【问题描述】:

我正在编写一个正则表达式来验证邮政编码,它的长度应该正好是 6 个字符,前 3 个字符是数字,后 2 个也是,但第 4 个字符应该是空格。
这里有一些例子:

  • “123456”无效,因为字符 4 中没有空格。
  • “123 45”有效。
  • “123 4”无效,因为长度是 5 而不是 6。

    这是我写的:

    /^[0-9]{6,6}$/

它工作正常,只是在上面的这段代码中,空间不是必需的(但应该是)。

【问题讨论】:

  • 为什么不用你描述的逻辑呢? /^\d{3} \d{2}$/?
  • 你可以写评论而不是投反对票!!!
  • @WiktorStribiżew 究竟如何?让我试试
  • 似乎有效,非常感谢
  • 请注意,如果您想进行一些干净的验证,而不是手动验证,您可以使用 Laravel 5.1 Custom validations rules 并在控制器上的验证中使用它。

标签: php regex laravel laravel-5 laravel-5.1


【解决方案1】:

你可以使用

/^\d{3} \d{2}$/

它匹配 3 位数字、空格、2 位数字字符串。请参阅regex demo

详情

  • ^ - start of string
  • \d{3} - 3 位数字(\d 默认匹配 PHP 正则表达式中的 ASCII 数字,与 [0-9] 相同)
  • - 空格
  • \d{2} - 2 位数字
  • $ - end of string

请注意,{6,6} limiting quantifier{6} 相同。

【讨论】:

    【解决方案2】:

    你很接近,但你错过了一些东西。

    如果你把你的正则表达式改成这个,它应该可以工作的。

    ^[0-9]{3}\s[0-9]{2}$
    

    或者你也可以使用

    ^\d{3}\s\d{2}$

    请注意,当您说{6,6} 时,表示前面的表达式必须出现在m 到n 次之间。你可以把它写成{6},虽然你的正则表达式是错误的,但这只是需要知道的。

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 2020-07-24
      • 2018-05-29
      • 2023-02-07
      • 2020-04-20
      • 2016-10-03
      • 1970-01-01
      • 2016-01-29
      • 2018-02-07
      相关资源
      最近更新 更多