2012-04-17 3 views
0

Это мое выражениеМаленькая поправка к электронной почте регулярное выражение

(\w+\.)*\w+\s*(@|\({1}\s*at\s*\){1}|\s+at\s+){1}\s*(\S{2,3}\.)?(\w+)(\s*dot\s*|\s*\.*\s*)(com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|ru)\b 

дает [email protected] от л @ ombe @ cs.name.edu что неправильно

мне нужно для исключения l @ ombe @ cs.name.edu из возможных вариантов

Я разработал это регулярное выражение, чтобы извлечь электронные письма из множества запутанных строк, а чем утверждать, как часть моего домашнего задания. Застрял на l @ ombe @ cs.name.edu тест.

Не могли бы вы помочь мне?

Redefenition:

Expression:

(\w+)@(\w+)\.name\.edu 

2 строки:

В результате получим:

[email protected] и [email protected]

1 часть не должна быть включена на всех.

+0

Что делать, если кто-то имеет '.IM' адрес, или один, принадлежащих к какой-либо другой TLD, которые вы не в списке? – ArjunShankar

+0

Это не проблема, это просто упрощенный подход, который я заменил впоследствии. – Dmitry

+1

Регулярное выражение для электронной почты * очень * сложно. Посмотрите на [этот вопрос и его ответы] (http://stackoverflow.com/questions/201323/how-to-use-a-regular-expression-to-validate-an-email-addresses) – ArjunShankar

ответ

0

RFC 2822

 
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 
+0

Спасибо, хороший пример. Я разработал это регулярное выражение, чтобы ** извлечь ** электронные письма из множества запутанных строк, а не проверять, как часть моего домашнего задания. Застрял на l @ ombe @ cs.name.edu. – Dmitry

0

Вы можете привязать регулярное выражение к началу и концу строки с помощью^и $. Это заставляет всю строку подбираться вместо одной ее части.

В вашем случае:

^(\w+\.)*\w+\s*(@|\({1}\s*at\s*\){1}|\s+at\s+){1}\s*(\S{2,3}\.)?(\w+)(\s*dot\s*|\s*\.*\s*)(com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|ru)\b$ 
+0

Это не работает. Например, \ b в конце исключает «Talk at Supercomputing» из вариантов. но почему-то я не могу найти выражение для начала строки. – Dmitry

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