我正在寻找一个正则表达式,它仅在输入字符串中验证完整的复杂英国邮政编码。所有不常见的邮政编码形式都必须包括在内。例如:
匹配
- CW3 9SS
- SE5 0EG
- SE50EG
- se5 0eg
- WC2H 7LT
没有匹配
- aWC2H 7LT
- WC2H 7LTa
- WC2H
如何解决这个问题?
最佳答案
我建议您查看英国政府邮政编码数据标准[链接现已失效; archive of XML ,参见Wikipedia供讨论]。有关于数据的简要描述,附加的 xml 模式提供了正则表达式。它可能不完全是您想要的,但将是一个很好的起点。 RegEx 与 XML 略有不同,因为给定的定义允许在格式 A9A 9AA 中的第三个位置使用 P 字符。
英国政府提供的正则表达式是:
([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\s?[0-9][A-Za-z]{2})
正如维基百科讨论中所指出的,这将允许一些非真实的邮政编码(例如以 AA、ZY 开头的邮政编码),并且它们确实提供了您可以尝试的更严格的测试。
关于用于匹配英国邮政编码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164979/