2013-09-12 6 views
1

Я новичок в регулярном выражении. Я проверяю идентификаторы электронной почты с помощью регулярных выражений.regex для проверки электронной почты ids

Ниже мой код, чтобы соответствовать <[email protected]> с [email protected]

Pattern p = Pattern.compile("\\<(.*?)\\>"); 
Matcher m = p.matcher("<[email protected]>"); 

и его рабочим штрафом. Теперь я хочу совместить либо <[email protected]>, либо [[email protected]] с [email protected].

Любое предложение будет оценено по достоинству.

ответ

1
Pattern p = Pattern.compile("(<(.*?)>|\\[(.*?)])"); 
+0

Спасибо за ответ, я получаю h Синтаксис Ошибка при попытке использовать этот код «Неверная escape-последовательность (допустимые: \ b \ t \ n \ f \ r \" \ '\\)' – Bhushan

+0

Doh! Был в режиме C# (где '@' перед строкой означает, что вам не нужно дублировать обратную косую черту). Просто исправлено, удалив '@' и добавив обратную косую черту. –

+0

Спасибо за ответ. Теперь работает. – Bhushan

1
Pattern p = Pattern.compile("[\\[\\<](.*?)[\\]\\>]"); 
Matcher m = p.matcher("[[email protected]]"); 
System.out.println(m.matches()); 
+3

Однако это также будет соответствовать '' '[foo @ bar>' '' и наоборот. – Danstahr

1

во-первых < или > не являются специальными символами для регулярных выражений, так что вы не должны использовать \

ваш регулярное выражение должно быть так:

"(<|\\])(.*?)\\1" но это регулярное выражение не проверяет адрес электронной почты действительный или не, если вы хотите сотрудничать управляете электронной почты является действительным или не вы будете использовать это регулярное выражение:

"(<|\\])([\\w\\-]([\\.\\w])+[\\w][email protected]([\\w\\-]+\\.)+[A-Z]{2,4})\\1"

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

+0

Технически, если адрес электронной почты содержит символ '@' и по крайней мере 1 символ до и после '@', то его действительный. Я не говорю, что его существующий адрес является только допустимым адресом. http://tools.ietf.org/html/rfc2822#section-3.4.1 –

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