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