Я пытаюсь выполнить проверку подлинности по электронной почте именно так
combination of letters (both upper & lower case), numbers and periods
single at symbol @
combination of letters (both upper & lower case), numbers, hyphens and/or periods
single period
combination of 2 – 4 letters (lower case only)
Это то, что у меня есть, и, пожалуйста, поправьте меня, если я ошибаюсь.
JSFIDDLE: http://jsfiddle.net/uk6cD/3/
a= "[email protected]"
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(a))
{
alert("correct")
}
else
{
alert("incorrect email id")
}
Адреса электронной почты могут быть сложными, см. Http://en.wikipedia.org/wiki/Email_address для введения, а затем различных RFC (например, http://tools.ietf.org/html/rfc6530.)
Как клиент javascript, я бы просто удостоверился, что atsign '@' присутствует и окружен каким-то текстом. Что-то вроде
/^.+@.+$/
или без регулярного выражения
var isValid = email.length >= 3 && email.indexOf('@') >= 0;
Вот список сложных адресов электронной почты; http://rumkin.com/software/email/test.php
Ваше регулярное выражение будет таким простым, как
var valid = email.match(/^[a-zA-Z0-9\.]+@([a-zA-Z0-9\.-]){1,}\.[a-z]{2,4}$/);
Надеюсь, поможет
/^\S+@\S+\.\S+$/
и сделайте все остальное на стороне сервераcombination of 2 – 4 letters
вызовет проблемы: некоторые TLD длиннее 4 символов и не забывают азиатские TLD.