2

谁能指出我正确的方向来使用正则表达式来验证英国邮政编码和澳大利亚邮政编码

英语 例如: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';
4

2 回答 2

2

你可以google一下,我自己找到了很多答案......

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

^([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

谷歌搜索,我发现了这个用于澳大利亚邮政编码的正则表达式:

^(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})$

你可以试试这里

于 2013-08-14T17:30:50.367 回答
0

这并没有直接回答您所说的问题,但老实说,我建议使用PEAR Validate_AUValidate_UK包,而不是使用可能允许误报的正则表达式。

于 2013-08-14T18:56:12.947 回答