Отправить регулярное выражение по электронной почте Совпадает с [точка] для "." & [at] для "@" - PullRequest
0 голосов
/ 28 марта 2020

Как мне сопоставить все электронные письма, перечисленные ниже, с помощью регулярных выражений:

maddy@gmail.com
ma123.23ddy(at)gmail.com
mad12-213dy@gmail(dot)com
ma123ddy[at]gmail[dot]com
mad123dy@gmail[dot]com 
maddy[at]gmail.com
rc.joshi62@gov[dot]ab.ws.com
rc.joshi62[at]gov.ab.ws.com
rc.joshi62[at]gov[dot]ab.ws.com
rc.joshi62@gov.ab.ws.com

c.123.joshi62(at)gov(dot)ab.ws.com
rc123.jo123shi62(at)gov.ab.ws.com
r123c.joshi62@gov(dot)ab.ws.com
c.123[dot]joshi62(at)gov(dot)ab[dot]ws[dot]com
rc123(dot)jo123shi62(at)gov(dot)ab(dot)ws(dot)com
rc123(dot)jo123shi62[at]gov(dot)ab(dot)ws(dot)com
r123c(dot)joshi62[at]gov(dot)ab[dot]ws[dot]com

Я пытаюсь сопоставить все сложные идентификаторы электронной почты, указанные в исходном коде этого сайта: view-source: https://www.panchayat.gov.in/web/guest/who-s-is-who В настоящее время я использую это регулярное выражение, как указано ниже:

\b[A-Z0-9._%+-]+@[[A-Z0-9.-]+\.[A-Z]{2,}\b

Ответы [ 3 ]

1 голос
/ 28 марта 2020

Хорошо, вот оно: Регулярное выражение:

\b[A-Z0-9._%+-]+(@|\[at\]|\(at\))[A-Z0-9.-]+((\.|\[dot\]|\(dot\))[A-Z]{2,})+\b

По сравнению с вашим собственным регулярным выражением, это просто добавляет alternations (что означает ИЛИ). Я добавляю:

(@|\[at\]|\(at\)) 

, что будет соответствовать '@ 'ИЛИ [at]' ИЛИ ​​'(at)'.

Для точки я добавляю:

(\.|\[dot\]|\(dot\))

, который будет соответствовать dot ИЛИ [dot] 'ИЛИ (dot)'

Затем я создал группу из:

((\.|\[dot\]|\(dot\))[A-Z]{2,})+

, которая будет соответствовать таким вещам, как: '.com' и '.uk.com' один или несколько раз.

Обновление: Я обновил регулярное выражение для поддержки '.' или «(точка)» или «[точка]» в имени перед «@»:

\b[A-Z0-9._%+-]+((\.|\[dot\]|\(dot\))[A-Z0-9._%+-]+)*(@|\[at\]|\(at\))[A-Z0-9.-]+((\.|\[dot\]|\(dot\))[A-Z]{2,})+\b

Теперь оно соответствует всем примерам вопроса.

Кстати: ошибка, которую вы сделано в вашем недавнем регулярном выражении, чтобы включить все в character group (между квадратными скобками). Это будет соответствовать каждому character в группе в любом порядке.

Обновление 2:

Упс, опечатка, обновлено регулярное выражение.

1 голос
/ 28 марта 2020

Учитывая эти строки ...

maddy@gmail.com
maddy[at]gmail[dot]com
maddy@gmail[dot]com
maddy[at]gmail.com
rc.joshi62@gov[dot]ab.ws.com
rc.joshi62[at]gov.ab.ws.com
rc.joshi62[at]gov[dot]ab.ws.com
rc.joshi62.gov.ab.ws.com
c.joshi62(at)gov(dot)ab.ws.com
rc.joshi62(at)gov.ab.ws.com
rc.joshi62@gov(dot)ab.ws.com

Следующее регулярное выражение соответствует строке, если она находится в отдельной строке ...

^([\w\d]+\.)?[\w\d]+(@|\[at\]|\(at\))?[\w\d]+(\.|\[dot\]|\(dot\))[\w\d]{2,}(\.[\w\d]+\.[\w\d]+)?(\.[\w\d]+)?$

Если электронное письмо появляется в большей строке но есть пробелы (границы слов до и после), попробуйте ...

\b([\w\d]+\.)?[\w\d]+(@|\[at\]|\(at\))?[\w\d]+(\.|\[dot\]|\(dot\))[\w\d]{2,}(\.[\w\d]+\.[\w\d]+)?(\.[\w\d]+)?\b
0 голосов
/ 28 марта 2020

С учетом этих строк ...

maddy@gmail.com
ma123.23ddy(at)gmail.com
mad12-213dy@gmail(dot)com
ma123ddy[at]gmail[dot]com
mad123dy@gmail[dot]com 
maddy[at]gmail.com
rc.joshi62@gov[dot]ab.ws.com
rc.joshi62[at]gov.ab.ws.com
rc.joshi62[at]gov[dot]ab.ws.com
rc.joshi62@gov.ab.ws.com
c.123.joshi62(at)gov(dot)ab.ws.com
rc123.jo123shi62(at)gov.ab.ws.com
r123c.joshi62@gov(dot)ab.ws.com
c.123[dot]joshi62(at)gov(dot)ab[dot]ws[dot]com
rc123(dot)jo123shi62(at)gov(dot)ab(dot)ws(dot)com
rc123(dot)jo123shi62[at]gov(dot)ab(dot)ws(dot)com
r123c(dot)joshi62[at]gov(dot)ab[dot]ws[dot]com

Попробуйте ...

\b([\w\d]+)?(\.)?([-])?[\w\d]+(\.)?[\w\d]+(@|\[at\]|\(at\))?[\w\d]+(\.|\[dot\]|\(dot\))[\w\d]{2,}(\.[\w\d]+\.[\w\d]+)?(\.[\w\d]+)?\b

ОБНОВЛЕНИЕ: исправленная версия ...

\b[\w\d.-]+(@|\[at\]|\(at\))[\w\d]+(\[dot\]|\(dot\)|\.)[\w\d.-]+\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...