邮政编码的正则表达式

Sha*_*ngh 113 regex

可能重复:
最终的邮政编码和邮政编码是什么?

我需要正则表达式,它可以满足我对邮政编码的所有三个条件.例如-

  1. 12345
  2. 12345-6789
  3. 12345 1234

任何指针和建议将不胜感激.谢谢 !

ken*_*ytm 300

^\d{5}(?:[-\s]\d{4})?$
Run Code Online (Sandbox Code Playgroud)
  • ^ =字符串的开头.
  • \d{5} =匹配5位数(条件1,2,3)
  • (?:…) =分组
  • [-\s] =匹配空格(条件3)或连字符(条件2)
  • \d{4} =匹配4位数(条件2,3)
  • …? =之前的模式是可选的(条件1)
  • $ =字符串的结尾.

  • `\ s`将匹配任何空格,包括制表符和新行. (6认同)
  • 派对有点晚了,也许不是球上最漂亮的钟声,但我在连字符的两边添加了额外的可选空格 - 主要是为了美学.`/(^\d {5}(:????[\ s]的[ - \s]的[\ s]的\ d {4})$)/` (5认同)
  • @ProVega:阅读您链接到的(现已删除的)答案的评论,这似乎是不正确的.例如,`00544`是有效的邮政编码; `544`不是. (4认同)
  • 嗨,没有空格的条件 123451234 怎么样 (2认同)
  • @AjaySuwalka:在没有空间的情况下容纳123451234所需要做的就是放置一个?在[-\ s]之后,因此它将变为:^ \ d {5}(?:[-\ s]?\ d {4})?$ (2认同)

Emm*_*mma 5

仅对于列出的三个条件,这些表达式也可能适用:

^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$
Run Code Online (Sandbox Code Playgroud)

请参阅此演示以获取更多说明。

如果我们有 5 到 4 位数字之间的意外额外空格或连续的 9 位邮政编码,例如:

123451234
12345 1234
12345  1234
Run Code Online (Sandbox Code Playgroud)

例如,此表达式将是具有较少约束的次要选项:

^\d{5}([-]|\s*)?(\d{4})?$
Run Code Online (Sandbox Code Playgroud)

请参阅此演示以获取更多说明。

正则表达式电路

jex.im可视化正则表达式:

在此处输入图片说明

测试

^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$
Run Code Online (Sandbox Code Playgroud)