Php Regex将检测伦敦邮政编码

Php Regex将检测伦敦邮政编码,php,preg-match,Php,Preg Match,我需要创建一个正则表达式来检测邮政编码并评估它是否是伦敦邮政编码 " E# N# SE# EC# NW# SW# W# WC# " 这是我尝试合并的正则表达式-,但解决方案不起作用 [代码>如果(preg)的比赛((“/((i)i)以下((((((?)码)如果(preg)的比赛(((()码>码>如果(preg)的比赛((((/)码>如果)如果(preg)的比赛((((/)码)码>如果)如果(码:::EC(:EC(?:EC(?:[:[[1234[1234][[AMNP4[AMNProv[AMNP

我需要创建一个正则表达式来检测邮政编码并评估它是否是伦敦邮政编码

"
E#
N#
SE#
EC#
NW#
SW#
W#
WC#
"
这是我尝试合并的正则表达式-,但解决方案不起作用

[代码>如果(preg)的比赛((“/((i)i)以下((((((?)码)如果(preg)的比赛(((()码>码>如果(preg)的比赛((((/)码>如果)如果(preg)的比赛((((/)码)码>如果)如果(码:::EC(:EC(?:EC(?:[:[[1234[1234][[AMNP4[AMNProv[AMNProv[4[4[AMNProv[1244[4[4[4[4]4]村村村村村村村[124][124][124][124][124)))Y)Y)Y)Y)Y)WC[124)WC(12[124)WC:(12][12][12[12[12[12]年[12]年)Y)WC:(12]年[12[12[12]年)WC:(12[12[12[12]年)WC:(12[12]年|EN[1-8]| E1W){0,}[0-9][ABD-HJLNP-UW-Z]{2}$/gm“,$postcode)){ echo“伦敦邮政编码”; }否则{ 回声“不是伦敦”; }
最好先使用一个简单的“它是有效的邮政编码吗”正则表达式,然后在前两个字符上进行简单的子字符串匹配,然后检查它是否是伦敦代码。因为测试
E
EC
都没有意义-
E
检查中已经包含了“EC”。仅供参考,该列表不包括外部伦敦邮政编码。Regex不是这项工作的合适工具。有效的伦敦pstcode不仅仅是前两个字符。示例:
WC1 2AB
有效,
WC1A 2BC
也有效,但
WC1B 2AB
无效,且
WC1 23C
也无效。然后是整个
S20
存在,但不是
E20
。你可能应该有一套规则,而不是一个单一的怪异的正则表达式。--好吧,这就是问题所在-我是否应该循环检查8个伦敦识别的邮政编码,看看正则表达式是否在其中一个上失败?你对“伦敦邮政编码”的标准是什么?我知道有多种正交定义(由地方政府、卫生局、国家政府维护),它们使用邮政编码列表来表示地理边界。但这些都不能用正则表达式表示。最好先使用一个简单的“it is a valid postcode”正则表达式,然后对前两个字符进行简单的子字符串匹配,然后检查它是否是伦敦代码。因为测试
E
EC
都没有意义-
E
检查中已经包含了“EC”。仅供参考,该列表不包括外部伦敦邮政编码。Regex不是这项工作的合适工具。有效的伦敦pstcode不仅仅是前两个字符。示例:
WC1 2AB
有效,
WC1A 2BC
也有效,但
WC1B 2AB
无效,且
WC1 23C
也无效。然后是整个
S20
存在,但不是
E20
。你可能应该有一套规则,而不是一个单一的怪异的正则表达式。--好吧,这就是问题所在-我是否应该循环检查8个伦敦识别的邮政编码,看看正则表达式是否在其中一个上失败?你对“伦敦邮政编码”的标准是什么?我知道有多种正交定义(由地方政府、卫生局、国家政府维护),它们使用邮政编码列表来表示地理边界。但这些都不能用正则表达式表示。