Супер простая проверка электронной почты с помощью javascript
Я делаю очень простую проверку электронной почты script, которая в основном просто проверяет следующие
- что письмо не пустое
- письмо содержит символ @с не менее чем 1 символом перед ним
- что существует домен, то есть @с не менее чем двумя буквами после него
- что он заканчивается полным стопом с не менее чем двумя буквами после него
Я знаю, что есть еще много проверок, но я смотрю на эти правила регулярных выражений, и мой ум перестает работать. Я полагаю, что если бы я начал с чего-то малого такого, я мог бы окунуться в мозг более сложными правилами.
В настоящее время с использованием некоторого jquery я делаю следующее:
var booking_email = $('input[name=booking_email]').val();
if(booking_email == '' || booking_email.indexOf('@') == -1 || booking_email.indexOf('.') == -1) {
// perform my alert
}
Этого достаточно, чтобы остановить 90% фальшивых писем до сих пор... Я бы просто хотел сделать это немного более эффективным, потому что в настоящее время мое правило разрешает такие письма, как "@domain.com" или "user @domain". потому что он только проверяет, что есть полный стоп и символ @.
Спасибо за любые советы.
Ответы
Ответ 1
То, что предложили другие, должно работать нормально, но если вы хотите, чтобы все было просто, попробуйте следующее:
var booking_email = $('input[name=booking_email]').val();
if( /(.+)@(.+){2,}\.(.+){2,}/.test(booking_email) ){
// valid email
} else {
// invalid email
}
Даже если вы решите пойти с чем-то более надежным, это должно помочь вам понять, насколько простым может быть регулярное выражение.:)
Ответ 2
Наименее возможная жадная проверка, которую вы делаете с этим RegExp /^[email protected]+\..+$/
Он будет обеспечивать только то, что адрес соответствует самым основным требованиям, которые вы упомянули: символ перед @и что-то до и после точки в доменной части. Проверка более чем вероятно будет неправильной (у вас всегда есть шанс занести в черный список действительный адрес электронной почты).
используйте его следующим образом:
var is_valid_email = function(email) { return /^[email protected]+\..+$/.test(email); }
Ответ 3
RegexLib.com(http://regexlib.com/Search.aspx?k=email) имеет сотни процедур проверки электронной почты по какой-либо причине. Я бы рекомендовал вам прочитать эту статью: http://www.unwrongest.com/blog/email-validation-regular-expressions/, и если вы решите продолжить использование регулярного выражения для проверки, моя любимая утилита для тестирования - это свободное регулярное выражение Дизайнер можно бесплатно скачать здесь: http://www.radsoftware.com.au/regexdesigner/... проверить все письма в большом списке (доступно для бесплатной загрузки или покупки... или использовать ваша собственная текущая БД), чтобы ваше регулярное выражение было приемлемым в ваших ограничениях.
Я бы порекомендовал базовый тест (многие в верхней части regexlib.com... Я не беру кредит за работу, которую я использую регулярно), а затем подпрограмма проверки подлинности электронной почты, которая требует взаимодействия с пользователем. Это единственный реальный способ "проверить" адрес электронной почты.
Ответ 4
Try:
function valid_email(email) {
return email.match(/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~][email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i);
}
Это лучшее доступное регулярное выражение для проверки электронной почты, в соответствии с этой статьей. Я рекомендую использовать это, если ваша цель не является чем-то действительно простым, но не полностью совместимым.
Ответ 5
Проверить электронную почту очень сложно, но вы можете иметь несколько ограничительную, но простую проверку электронной почты. Я сам использую этот, который делает довольно приличную работу, чтобы убедиться, что это 95% адрес электронной почты.
var simpleValidEmail = function( email ) {
return email.length < 256 && /^[^@][email protected][^@]{2,}\.[^@]{2,}$/.test(email);
};
Я бы порекомендовал это для "простой" проверки.
Чтобы понять, почему это трудно решить, см.: Как проверить адрес электронной почты с помощью регулярного выражения?
Обновление: исправлено регулярное выражение
Ответ 6
Вы также можете использовать это регулярное выражение с открытым исходным кодом, называемое validator-isEmail.
function isEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\[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 re.test(email);
};
Вы также можете попробовать этот пакет NPM, чтобы сделать трюк.
Ответ 7
Если вы хотите проверить только для бизнес-почты, попробуйте это:
<script type="text/javascript">
$(document).ready(function(e){
$('#sendReq').click(function(){
var email = $('#emailAddress').val();
var reg = /^([\w-\.][email protected](?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)(?!aol.com)(?!abc.com)(?!xyz.com)(?!pqr.com)(?!rediffmail.com)(?!live.com)(?!outlook.com)(?!me.com)(?!msn.com)(?!ymail.com)([\w-]+\.)+[\w-]{2,4})?$/;
if (reg.test(email)){
return 0;
}
else{
alert('Please Enter Business Email Address');
return false;
}
});
});
</script>
Ответ 8
Вы можете попробовать следующее:
var booking_email = $('input[name=booking_email]').val();
if(booking_email.match(/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
// valid email
} else {
// not valid
}