使用正则表达式找到无效的邮政编码
问题描述:
我是新来的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}
我明白了第一个功能,但我不知道怎么写“理想”的解决方案作为一个功能,可以请你建议?
答
如果您在注释字段提供的正则表达式是正确的,你不知道如何在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中的字符串中。我也强烈建议你在开始时使用^
和$
。在正则表达式的末尾指示字符串的开始和结束(否则,它是有效的,如果只有一部分字符串包含正确的模式,即具有有效部分的较长字符串将被接受)。Here is a live example。
如果你正在寻找的英国邮政编码验证,你应该使用下面的正则表达式,而不是(source):
(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})
如果您正在寻找其他的东西,请提供下面的评论。
您需要提供有效邮政编码的示例。什么对你有效?那个评论“更准确”是你想在PHP中使用的正则表达式,而不是你在上面几行使用的正则表达式? –
您居住的每个国家/地区都有很多邮政编码类型。正如ssc-hrep3所述,请为我们提供应该与不应匹配的邮政编码列表。 – Mateus
谢谢大家,我指的是英国邮政编码。我现在从ssc-hrep3得到了答案,谢谢你的帮助。 –