Почтовые индексы могут быть изменены, и единственным истинным способом проверки почтового индекса является полный список почтовых индексов и посмотреть, существует ли он.
Но регулярные выражения полезны, потому что они:
Но регулярные выражения, как правило, трудно поддерживать, особенно для тех, кто не придумал его в первое место. Таким образом, это должно быть:
Это означает, что большинство регулярных выражений в этом ответе недостаточно. Например. Я вижу, что [A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]
будет соответствовать области почтового индекса формы AA1A - но это будет боль в области шеи, если и когда добавится новая область почтового индекса, потому что трудно понять, в каких областях почтового индекса это соответствует.
Я также хочу, чтобы мое регулярное выражение соответствовало первой и второй половине почтового индекса в скобках.
Итак, я придумал следующее:
(GIR(?=\s*0AA)|(?:[BEGLMNSW]|[A-Z]{2})[0-9](?:[0-9]|(?<=N1|E1|SE1|SW1|W1|NW1|EC[0-9]|WC[0-9])[A-HJ-NP-Z])?)\s*([0-9][ABD-HJLNP-UW-Z]{2})
В формате PCRE его можно записать следующим образом:
/^
( GIR(?=\s*0AA) # Match the special postcode "GIR 0AA"
|
(?:
[BEGLMNSW] | # There are 8 single-letter postcode areas
[A-Z]{2} # All other postcode areas have two letters
)
[0-9] # There is always at least one number after the postcode area
(?:
[0-9] # And an optional extra number
|
# Only certain postcode areas can have an extra letter after the number
(?<=N1|E1|SE1|SW1|W1|NW1|EC[0-9]|WC[0-9])
[A-HJ-NP-Z] # Possible letters here may change, but [IO] will never be used
)?
)
\s*
([0-9][ABD-HJLNP-UW-Z]{2}) # The last two letters cannot be [CIKMOV]
$/x
Для меня это правильный баланс между валидацией, насколько это возможно, и в то же время будущая проверка и удобство обслуживания .
Я имел (и решил), подобная проблема.
я только что установил новую Ubuntu 12.04 со шмелем 3.0 и когда я пытаюсь протестировать его использующий, например, "optirun Firefox", я получаю пустой экран только с курсором мыши.
, Когда я переключаюсь на другую консоль ( Высокий звук + Ctrl + F6 , например) и возвращение к регулярной консоли ( Высокий звук + Ctrl + F7 ) я вижу, что окно Firefox было открыто.
я сделал
sudo apt-get purge bumblebee
sudo apt-get purge nvidia-current
и затем установил шмеля снова
sudo apt-get install bumblebee
, и он начал работать правильно.
См. мое сообщение здесь , Проблемы HDMI с Optimus решили , вероятно, что у Вас есть подобная проблема и что Ваше ТВ/монитор и его разрешения не определяются правильно.