PHP中的US / UK / CA邮政编码验证

时间:2010-11-04 23:54:55

标签: php zipcode postal-code

我对正则表达式不太好。我想添加一个验证函数,如果输入的字符串是有效的美国,英国或CA邮政编码,将返回true / false。

美国:NNNNN CA:LNL NLN 英国:很多组合

L =字母,N =数字

美国和加拿大都有各自的功能,但我没有提出一个统一的功能来实现这一目标。

2 个答案:

答案 0 :(得分:3)

查看Zend_Validate_Postcode

中的Zend Framework
  

Zend_Validate_PostCode允许您   确定给定值是否有效   邮政编码。邮政编码是具体的   到城市,在一些地方称为   邮政编码。

     

Zend_Validate_PostCode   了解超过160种不同的邮政   代码格式。要选择正确的   格式有两种方式。您可以   使用完全限定的语言环境或   你可以手动设置自己的格式。

我猜您可以查看源代码,也可以将其用作独立组件。它可能在ZF中具有依赖关系,但您肯定不需要仅为该组件使用整个框架。希望有所帮助。

答案 1 :(得分:1)

我的解决方案是使用逻辑OR运算符来使用三个单独的正则表达式:

if (
    preg_match('/^\d{5}(?:\-\d{4})?$/i', $code, $matches) OR
    preg_match('/^[a-z]\d[a-z] ?\d[a-z]\d$/i', $code, $matches) OR
    preg_match('/^[a-z]{1,2}\d{1,2} ?\d[a-z]{2}$/i', $code, $matches)
) {
    // deal with $matches here
}

请注意,这是因为PHP使用短路逻辑。一旦测试通过,其他测试将被忽略,因此$matches将不会被覆盖。