一个正则表达式验证美国和加拿大邮政编码

时间:2014-03-20 21:06:31

标签: regex

我正在开发一个文具程序。客户可以选择在美国或加拿大选择他们的地区。当他们输入地址时,他们必须输入ZIP /邮政编码。我正在尝试验证字段,但我不能在美国或加拿大使用reg exp。我需要一个验证两个国家邮政编码的正则表达式。

2 个答案:

答案 0 :(得分:20)

不知道您使用的语言,我不会使用任何字符类缩写:

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

根据您的语言,您可以将其缩写为

^([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)$

支持ZIP + 4:

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

如果你想对你的加拿大代码非常挑剔:

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

答案 1 :(得分:2)

通过上面的答案,您可以将(?i)添加到正则表达式的开头,使其不区分大小写。所以它看起来像这样:

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