我对正则表达式不太好。我想添加一个验证函数,如果输入的字符串是有效的美国,英国或CA邮政编码,将返回true / false。
美国:NNNNN CA:LNL NLN 英国:很多组合L =字母,N =数字
美国和加拿大都有各自的功能,但我没有提出一个统一的功能来实现这一目标。
答案 0 :(得分:3)
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
将不会被覆盖。