使用正则表达式查找无效的邮政编码

时间:2017-02-12 14:16:49

标签: php regex

我是php的新手,我正在尝试编写一个函数来查找无效的邮政编码。这是一个选项,但我被告知这不是理想的格式:

function postcode_valid($postcode) {
    return preg_match('/\w{2,3} \d\w{2}/', $postcode);
}

//more accurate
//[A-Z]{1,2}[0-9]{1,2}[A-Z]? [0-9][A-Z]{2}

我理解第一个功能,但我不知道如何编写'理想'解决方案作为功能,请您指教?

1 个答案:

答案 0 :(得分:0)

如果您在评论字段中提供的正则表达式是正确的,并且您不知道如何在PHP中使用它,那么这就是解决方案:

function postcode_valid($postcode) {
   return preg_match('/^[A-Z]{1,2}[0-9]{1,2}[A-Z]? [0-9][A-Z]{2}$/', $postcode);
}

您需要在正则表达式中添加两个斜杠(一个在前面,一个在末尾),并将其打包在PHP中的字符串中。我还强烈建议您在开头使用^$。在正则表达式的末尾指示字符串的开头和结尾(否则,如果只有字符串的一部分包含正确的模式,则它是有效的,即接受带有有效部分的较长字符串。){{ 3}}

如果您正在寻找英国邮政编码的验证,您应该使用以下正则表达式(Here is a live example):

(GIR 0AA)|((([A-Z-[QVX]][0-9][0-9]?)|(([A-Z-[QVX]][A-Z-[IJZ]][0-9][0-9]?)|(([A-Z-[QVX]][0-9][A-HJKPSTUW])|([A-Z-[QVX]][A-Z-[IJZ]][0-9][ABEHMNPRVWXY])))) [0-9][A-Z-[CIKMOV]]{2})

如果您正在寻找其他内容,请在下面提供评论。