RegEx英语和澳大利亚邮政编码

时间:2013-08-14 16:10:59

标签: php regex

有人能指出正确的方向来确定英文邮政编码和澳大利亚邮政编码吗

英语例如:AA11 1AA 澳大利亚人:1111

我目前用来验证英文邮政编码的表达方式是:

$PostCodeRegex = '~^(GIR 0AA)|(TDCU 1ZZ)|(ASCN 1ZZ)|(BIQQ 1ZZ)|(BBND 1ZZ)'
.'|(FIQQ 1ZZ)|(PCRN 1ZZ)|(STHL 1ZZ)|(SIQQ 1ZZ)|(TKCA 1ZZ)'
. '|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]'
. '|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))'
. '|[0-9][A-HJKS-UW])\s?[0-9][ABD-HJLNP-UW-Z]{2}$~i';

2 个答案:

答案 0 :(得分:2)

你可以稍微谷歌一下,我自己找到了很多答案......

我不确定你的英国正则表达式,因为它对我不起作用,所以我尝试了这个:

^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$

Source: http://stackoverflow.com/a/164992/1519058

谷歌搜索,我发现这个正则表达式为澳大利亚postecodes:

^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$

Source: http://www.etl-tools.com/regular-expressions/is-australian-post-code.html

所以现在你只使用“|”连接它们,它可能会给你你想要的东西:

^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$|^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$

您可以尝试HERE

答案 1 :(得分:0)

这并没有直接回答你提出的问题,但我诚实地建议使用PEAR Validate_AUValidate_UK软件包,而不是使用可能允许错误的正则表达式积极的。