Regexp: como validar um código postal do Reino Unido

No Reino Unido, os códigos postais são uma parte crucial do endereço de alguém, pois reduzem os endereços até a rua do local desejado (em países como a França, no entanto, um código postal apenas informa em qual cidade ou município o endereço está localizado). Pode ser útil certificar-se de que seus usuários forneçam um código postal válido do Reino Unido em um formulário. Para fazer isso, precisaremos corresponder o código postal a um regexp … mas o que é um código postal válido do Reino Unido e que regexp podemos usar para garantir que um código postal seja realmente válido? A Wikipedia nos diz que os códigos postais do Reino Unido podem usar os seguintes formatos (‘A’ significa qualquer letra e ‘9’ para qualquer dígito):

  • AA9A 9AA
  • A9A 9AA
  • A9 9AA
  • A99 9AA
  • AA9 9AA
  • AA99 9AA

Para corresponder a qualquer um desses padrões, podemos usar a seguinte expressão regular: / ^ [a-zA-Z] {1,2} ([0-9] {1,2} | [0-9] [a-zA -Z]) s * [0-9] [a-zA-Z] {2} $ / Vamos decompor isso para sabermos o que está fazendo:

  • Começamos certificando-nos de que nosso código postal não está rodeado por mais nada em nosso campo, então o colocamos entre um início do limite de entrada ( ^ ) e um final do limite de entrada ( $ ).
  • Então, aceitamos uma ou duas letras [a-zA-Z] {1,2}
  • Seguido por um dígito e uma letra ou entre um e dois dígitos: ([0-9] {1,2} | [0-9] [a-zA-Z])
  • Um espaço opcional s *
  • Finalmente, um dígito seguido por duas letras: [0-9] [a-zA-Z] {2}

O que eu perdi? Existe uma maneira melhor de escrever isso? Quão difícil é obter endereços do Reino Unido de um código postal usando uma API externa? Avise-se me !