Сложный шаблон регулярных выражений для почтовых индексов - PullRequest
2 голосов
/ 11 февраля 2020

В настоящее время у меня есть шаблон регулярных выражений, разрешающий только британские почтовые индексы 'LL', и я использую его с петрушкой JS с тегом 'pattern'.

data-parsley-pattern="/^[L]{2}[0-9][0-9A-Z]? ?[0-9][A-Z]{2}$/"

Теперь мне нужно сложное регулярное выражение, которое позволило бы использовать все почтовые индексы 'LL' и определенные почтовые индексы 'CH'.

Может кто-нибудь сказать, как это будет выглядеть? Это слишком сложно для меня.

CH1 6B <---- 1 letter after the B
CH1 6Q <---- 1 letter after the Q
CH4 9A <---- 1 letter after the 0
CH4 9B <---- 1 letter after the 0
CH4 0 <---- 2 letters after the 0
CH5 <---- All variations like the 'LL'regex  [0-9][0-9A-Z]? ?[0-9][A-Z]{2}
CH6 <---- All variations like the 'LL' regex  [0-9][0-9A-Z]? ?[0-9][A-Z]{2}
CH7 <---- All variations like the 'LL' regex  [0-9][0-9A-Z]? ?[0-9][A-Z]{2}
CH8 <---- All variations like the 'LL' regex  [0-9][0-9A-Z]? ?[0-9][A-Z]{2}

Идея состоит в том, что если почтовый индекс начинается с 'LL', продолжить с использованием обычного регулярного выражения, если почтовый индекс начинается с CH, используйте другой шаблон для всего, что после 'CH'

Is это вообще возможно?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Я только что начал с RegEx (так что это может быть ошибочно), но может быть что-то вроде этого:

^(LL\d[0-9A-Z]? ?\d[0-9A-Z]{2}|CH1 (6B|6Q)[A-Z]|CH4 (9A|9B)[A-Z]|CH4 0[A-Z]{2}|CH[5-8][0-9A-Z]? ?\d[0-9A-Z]{2})$
2 голосов
/ 11 февраля 2020

Я не совсем понимаю, каким должно быть выражение CH, но, возможно, я могу дать вам несколько указателей.

/^(LL\d[0-9A-Z]? ?\d[A-Z]{2}|CH1 (6B|6Q)[0-9A-Z]|CH[2-9] \d[0-9A-Z]{1,2})$/

/^(A|B)$/ будет соответствовать либо A, либо B. А и В также могут быть более сложными. Вы можете использовать это для проверки нескольких различных шаблонов, каждый из которых разделен |.

[L]{2} плохо читаемым LL, сделайте это просто:)

\d это сокращение для [0-9]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...