有效的英国邮政编码正则表达式模式?

Posted

技术标签:

【中文标题】有效的英国邮政编码正则表达式模式?【英文标题】:Valid UK Postcode Regex Pattern? 【发布时间】:2014-01-06 21:56:58 【问题描述】:

我得到了英国邮政编码的以下模式:

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

谁能帮我分析一下?

【问题讨论】:

在 Windows regexbuddy 上花费 40 美元是物有所值的。我在 Linux/Mac 上用 wine 运行它就好了,因为它都押韵它一定很好;) 如果您使用的是 php,您可以查看non-regex solution。 【参考方案1】:

Here是:

NODE                     EXPLANATION
----------------------------------------------------------------------
  (                        group and capture to \1:
----------------------------------------------------------------------
    [A-PR-UWYZ0-9]           any character of: 'A' to 'P', 'R' to
                             'U', 'W', 'Y', 'Z', '0' to '9'
----------------------------------------------------------------------
    [A-HK-Y0-9]              any character of: 'A' to 'H', 'K' to
                             'Y', '0' to '9'
----------------------------------------------------------------------
    [AEHMNPRTVXY0-9]?        any character of: 'A', 'E', 'H', 'M',
                             'N', 'P', 'R', 'T', 'V', 'X', 'Y', '0'
                             to '9' (optional (matching the most
                             amount possible))
----------------------------------------------------------------------
    [ABEHMNPRVWXY0-9]?       any character of: 'A', 'B', 'E', 'H',
                             'M', 'N', 'P', 'R', 'V', 'W', 'X', 'Y',
                             '0' to '9' (optional (matching the most
                             amount possible))
----------------------------------------------------------------------
     1,2                   ' ' (between 1 and 2 times (matching the
                             most amount possible))
----------------------------------------------------------------------
    [0-9]                    any character of: '0' to '9'
----------------------------------------------------------------------
    [ABD-HJLN-UW-Z]2       any character of: 'A', 'B', 'D' to 'H',
                             'J', 'L', 'N' to 'U', 'W' to 'Z' (2
                             times)
----------------------------------------------------------------------
   |                        OR
----------------------------------------------------------------------
    GIR 0AA                  'GIR 0AA'
----------------------------------------------------------------------
  )                        end of \1

【讨论】:

【参考方案2】:

debuggex.com 是一个非常有用的正则表达式调试资源:

Debuggex Demo

【讨论】:

这太棒了。谢谢!【参考方案3】:

实际上,我更喜欢其他两个答案中的任何一个,而不是我即将列出的答案,但越多越好:

http://regex101.com/ - 将给出一个很好的细分/解释

http://www.regexper.com/ - 将生成一个可爱的铁路图:

以下答案也值得一读,以了解细微的替代/解释:

UK Postcode Regex (Comprehensive)

UK Postcode Regex

【讨论】:

这些都很棒,但是对于纯粹的数量,我会标记你是正确的。谢谢大家!

以上是关于有效的英国邮政编码正则表达式模式?的主要内容,如果未能解决你的问题,请参考以下文章

英国邮政编码的正则表达式

ActionScript 3 AS3使用正则表达式检查并返回有效的英国邮政编码

C# - 英国邮政编码正则表达式没有按预期工作?

使用正则表达式识别英国邮政编码中的模式

AS3使用正则表达式检查并返回有效的英国邮政编码

使用正则表达式验证英国邮政编码