One Regular Expression to validate US and Canada ZIP / Postal Code

前端 未结 2 1759
小鲜肉 2021-02-20 17:33

I am developing a stationery program. Customers have choice to pick their region either US or Canada. When they enter address they have to enter ZIP/Postal code. I am trying to

  • 2021-02-20 17:51

    Not knowing what language you're using, I will not use any abbreviations for character classes:

    ^[0-9]{5}$|^[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]$

    Depending on your language, you might be able to abbreviate this to

    ^([0-9]{5}|[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9])$


    ^(\d{5}|[A-Z]\d[A-Z] ?\d[A-Z]\d)$

    To support ZIP+4:

    ^(\d{5}(-\d{4})?|[A-Z]\d[A-Z] ?\d[A-Z]\d)$

    And if you want to get really picky about your Canada codes:

    ^(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$
    0 讨论(0)
  • 2021-02-20 18:05

    Furthering the answer above you could add (?i) to the beginning of the regex to make is case insensitive. So it would look like this:

    ^(?i)(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$
    0 讨论(0)