2016-03-08 3 views
0

Я не понимаю этого. Надеюсь, кто-нибудь сможет объяснить.регулярное выражение - подтвердите электронную почту

Я кодировал регистрационную форму для клиентского сайта.

Я искал регулярное выражение для проверки идентификатора электронной почты.

Я нашел это на одном из сайтов. Ниже приведено выражение -

/^\w+([.-]?\w+) @ \ w + ([.-]? \ W +) (. \ W {2,3}) + $ /;

Я не понимаю, почему автор избежал периода (.) С обратным слэшем() несколько раз по всему выражению, хотя разделитель является косой чертой (/).

Мое понимание состоит в том, что нам нужно убежать с обратным слэшем, только если мы хотим использовать разделитель внутри выражения.

Пожалуйста, помогите понять

+0

[Не делайте этого, человек. Поместите регулярное выражение и просто уходите.] (Https://davidcel.is/posts/stop-validating-email-addresses-with-regex/) – Walf

ответ

0

правила, которые вы упомянули о бежавших разделители, вероятно, основаны на языке, который вы пишете в (Perl?), Так как разделитель (/) символ «специальный» в контексте данного языка (или, по крайней мере, в контексте использования шаблонов регулярных выражений на этом языке).

Однако существует несколько символов, которые являются особыми в контексте самого шаблона регулярного выражения, и один из них является символом периода (.), Который соответствует любому символу. Итак, если вы хотите сопоставить фактический период в своем регулярном выражении, вам нужно избежать его с помощью обратного слэша для анализатора регулярных выражений, а не анализатора языка.

Например, в шаблоне вы предоставили, без периода в этой последних символьной группировке сбежавшей ((.\w{2,3})+$), регулярное выражение будет соответствовать любому символу (.), затем 2 или 3 символов слова (\w = AZ, AZ, 0 -9, или _) еще один раз (+ = одна или несколько предыдущих групп, набор символов и т. Д.).

Таким образом, без обратной косой черты последний шаблон группировки символов соответствует «.bc», «.bcd» и «abcd». Но, когда период сбегает с обратной косой чертой (\.), он становится буквальным периодом, и шаблон больше не соответствует «abcd».

Смежные вопросы