RegEx仅验证第一部分或完整英国邮政编码的模式

时间:2015-12-15 09:43:05

标签: regex validation

我知道这似乎是重复但我已尝试发布hereherehereherehere的所有其他解决方案。

我正在寻找一个正则表达式,它可以验证第一部分或完整英国邮政编码的模式(带空格)。我不想检查邮政编码的真实性。

到目前为止,我已经提出了这个

((([A-Za-z]?[A-Za-z])[1-9]?([0-9]|[A-Za-z]))|(([A-Za-z]?[A-Za-z])[1-9]?([0-9]|[A-Za-z])\s[1-9][A-Za-z][A-Za-z]))$

这似乎适用于所有模式。但这也验证了反向邮政编码(LastPart FirstPart),例如。 (6FW OX28)

我正在寻找以下模式(从this问题复制)

1 Letter  1 Number
1 Letter  2 Numbers
2 Letters 1 Number
2 Letters 1 Number  1 Letter
2 Letters 2 Numbers
1 Letter  1 Number  (Space) 1 Number 2 Letters
1 Letter  2 Numbers (Space) 1 Number 2 Letters
2 Letters 1 Number  (Space) 1 Number 2 Letters
2 Letters 1 Number  1 Letter (Space) 1 Number 2 Letters
2 Letters 2 Numbers (Space) 1 Number 2 Letters

2 个答案:

答案 0 :(得分:1)

这看起来足够了(根据评论更新):

^([A-Z]\d{1,2}|[A-Z]{2}\d(\d|[A-Z]?))( \d[A-Z]{2})?$

see test

它包括一个很长的解释,我将给出一个简短的版本

  

基本上有2个部分,代码可以只是第一部分,或者第一部分,然后是第二部分。

  第一部分是([A-Z]\d{1,2}|[A-Z]{2}\d(\d|[A-Z])?)
  含义:
  [A-Z]\d{1,2} - 一封字母和1-2位数字   | - 或
  [A-Z]{2}\d - 两个字母,一个数字,然后是   (\d|[A-Z])? - 数字,字母或任何内容(使用?使其成为可选项)。   

  第二部分是静态 - [空格] [数字] [两个字母],( \d[A-Z]{2})使用?符号使其成为可选项。

答案 1 :(得分:1)

我能建议的最好的是:

/^[a-z](\d\d?|[a-z]\d[a-z\d]?|[a-z]?\d?\d \d[a-z]{2}|[a-z]\d [a-z] \d[a-z]{2})$/i

[Regex Demo]