【发布时间】:2022-04-13 23:25:25
【问题描述】:
我正在开发一个文具程序。客户可以选择美国或加拿大的地区。当他们输入地址时,他们必须输入邮政编码。我正在尝试验证字段,但我不能将 reg exp 用于美国或加拿大。我需要一个验证两个国家/地区邮政编码的正则表达式。
【问题讨论】:
标签: regex
我正在开发一个文具程序。客户可以选择美国或加拿大的地区。当他们输入地址时,他们必须输入邮政编码。我正在尝试验证字段,但我不能将 reg exp 用于美国或加拿大。我需要一个验证两个国家/地区邮政编码的正则表达式。
【问题讨论】:
标签: regex
不知道你使用的是什么语言,我不会使用任何字符类的缩写:
^[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)$
【讨论】:
进一步回答上述问题,您可以在正则表达式的开头添加 (?i) 以使其不区分大小写。所以它看起来像这样:
^(?i)(\d{5}(-\d{4})?|[A-CEGHJ-NPRSTVXY]\d[A-CEGHJ-NPRSTV-Z] ?\d[A-CEGHJ-NPRSTV-Z]\d)$
【讨论】:
(?i) 是非标准的这一事实之外,它也不适合这个问题。
这对我有用。使用美国邮政编码和加拿大邮政编码进行测试。
^((\d{5}-\d{4})|(\d{5})|([A-Z|a-z]\d[A-Z|a-z]\d[A-Z|a-z]\d))$
【讨论】: