我知道这似乎是重复但我已尝试发布here,here,here,here和here的所有其他解决方案。
我正在寻找一个正则表达式,它可以验证第一部分或完整英国邮政编码的模式(带空格)。我不想检查邮政编码的真实性。
到目前为止,我已经提出了这个
((([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
答案 0 :(得分:1)
这看起来足够了(根据评论更新):
^([A-Z]\d{1,2}|[A-Z]{2}\d(\d|[A-Z]?))( \d[A-Z]{2})?$
它包括一个很长的解释,我将给出一个简短的版本
基本上有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