用于匹配英国邮政编码的正则表达式

标签 regex validation regex-group postal-code

我正在寻找一个正则表达式,它仅在输入字符串中验证完整的复杂英国邮政编码。所有不常见的邮政编码形式都必须包括在内。例如:

匹配

  • 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/

相关文章:

regex - 使用 sed 在字符串中附加字符串值

javascript - JS/Jquery,匹配未找到 PNG = 匹配 ('/gif|jpg|jpeg|png/' )

php - 如何在 Laravel 验证中要求数组并防止获得意外 key

asp.net-mvc - DataAnnotations - 验证未发生

c# - 在 WinForms 中添加验证而不使用 IDataErrorInfo

javascript - 使用正则表达式检查可选字符集

Python 3.6.1 |正则表达式搜索具有特殊字符的文件

java - 如何使用正则表达式验证字符串中两个字符之间没有空格

c# - 如何从正则表达式中提取多个值?

regex - Perl 多行正则表达式