2013-05-03 6 views
2

вот код, который я использую для проверки адреса электронной почты по нажатию кнопки отправки пользователем,Проверка адреса электронной почты с помощью JavaScript

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

Я хотел бы, чтобы апостроф (') на адрес электронной почты, введенный пользователь, какова будет модификация для регулярного выражения выше?

+2

см http://ex-parrot.com/~pdw/Mail-RFC822-Address.html Все, что меньше, чем это несовершенство. Другими словами, очень сложно проверить валидные варианты действительных адресов электронной почты. –

+1

Лучший способ проверить адрес электронной почты - попробовать. Пока он имеет символ @, он может быть адресом электронной почты. – nullability

+0

Существует, конечно, огромный разрыв между предлагаемым здесь регулярным выражением и рекомендацией Рика Висконси. Ваше регулярное выражение нарушено в нескольких отношениях Keethan. – symcbean

ответ

1

попробовать это:

/^(\w|')+([\.-]?(\w|')+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ 

это позволит апостроф в любом месте до '@'

1

Ваш текущий Regex соответствует следующему электронному адресу:

Но не совпадает с этим:

Если вы только в основном пытаются проверить электронный адрес, содержащий один апостроф, как это:

Тогда просто добавьте Quoi в первой скобке:

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

Но это все равно не будет соответствовать МНОГО адресов электронной почты (один с тиром и апострофом, один с мультипликаторами тиром [...]).

+0

Почему вы думаете, что «[email protected]» не будет совпадать? если вы попробуете регулярное выражение, вы это увидите. группа захвата ([\ .-]? \ w +) имеет звезду, поэтому ее можно повторять столько раз, сколько нужно. он не будет соответствовать этому, однако: '[email protected]' –

+0

@hhamilton. На самом деле он редактировал Regex, сначала это было что-то другое – RelevantUsername

0

Использование регулярных выражений, вероятно, является лучшим способом. Вот пример (demo):

function validateEmailAddress(emailID) { 
    var emailRgx = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\ 
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA 
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return emailRgx .test(emailID); 
} 
Смежные вопросы