Ответы:
Вы можете использовать обычный старый JavaScript для этого:
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
на var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,6})+$/;
поддержку новых доменов верхнего уровня, таких как .museum и т. Д.
Функция jQuery для проверки электронной почты
Я действительно не люблю использовать плагины, особенно когда в моей форме есть только одно поле, которое нужно проверить. Я использую эту функцию и вызываю ее всякий раз, когда мне нужно проверить поле формы электронной почты.
function validateEmail($email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return emailReg.test( $email );
}
и теперь, чтобы использовать это
if( !validateEmail(emailaddress)) { /* do stuff here */ }
Ура!
emailReg.test($email);
emailReg.text("")
true
. Я бы просто функция до объявления emailReg var, то это:return ( $email.length > 0 && emailReg.test($email))
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
наvar emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
Я бы использовал плагин проверки jQuery по нескольким причинам.
Вы подтвердили, хорошо, отлично, что теперь? Вам необходимо отобразить ошибку, обработать ее, когда она действительна, и показать, сколько всего ошибок возможно? Есть много вещей, которые он может обработать для вас, нет необходимости заново изобретать колесо.
Кроме того, еще одно огромное преимущество заключается в том, что он размещен на CDN, текущую версию на момент ответа можно найти здесь: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx Это означает более быстрое время загрузки клиента.
Посмотрите на http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ . Это хороший плагин jQuery, который позволяет построить мощную систему проверки форм. Есть некоторые образцы Полезные здесь . Итак, проверка поля электронной почты в форме будет выглядеть так:
$("#myform").validate({
rules: {
field: {
required: true,
email: true
}
}
});
Смотрите документацию по электронной почте для получения подробной информации и образцов.
x@x
(это странно), он должен x@x.x
Как я могу это исправить?
$.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }
<script type="text/javascript">
$(document).ready(function() {
$('.form_error').hide();
$('#submit').click(function(){
var name = $('#name').val();
var email = $('#email').val();
var phone = $('#phone').val();
var message = $('#message').val();
if(name== ''){
$('#name').next().show();
return false;
}
if(email== ''){
$('#email').next().show();
return false;
}
if(IsEmail(email)==false){
$('#invalid_email').show();
return false;
}
if(phone== ''){
$('#phone').next().show();
return false;
}
if(message== ''){
$('#message').next().show();
return false;
}
//ajax call php page
$.post("send.php", $("#contactform").serialize(), function(response) {
$('#contactform').fadeOut('slow',function(){
$('#success').html(response);
$('#success').fadeIn('slow');
});
});
return false;
});
});
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!regex.test(email)) {
return false;
}else{
return true;
}
}
</script>
<form action="" method="post" id="contactform">
<table class="contact-table">
<tr>
<td><label for="name">Name :</label></td>
<td class="name"> <input name="name" id="name" type="text" placeholder="Please enter your name" class="contact-input"><span class="form_error">Please enter your name</span></td>
</tr>
<tr>
<td><label for="email">Email :</label></td>
<td class="email"><input name="email" id="email" type="text" placeholder="Please enter your email" class="contact-input"><span class="form_error">Please enter your email</span>
<span class="form_error" id="invalid_email">This email is not valid</span></td>
</tr>
<tr>
<td><label for="phone">Phone :</label></td>
<td class="phone"><input name="phone" id="phone" type="text" placeholder="Please enter your phone" class="contact-input"><span class="form_error">Please enter your phone</span></td>
</tr>
<tr>
<td><label for="message">Message :</label></td>
<td class="message"><textarea name="message" id="message" class="contact-input"></textarea><span class="form_error">Please enter your message</span></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" class="contactform-buttons" id="submit"value="Send" />
<input type="reset" class="contactform-buttons" id="" value="Clear" />
</td>
</tr>
</table>
</form>
<div id="success" style="color:red;"></div>
<!-- Dont forget to include the jQuery library here -->
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#validate").keyup(function(){
var email = $("#validate").val();
if(email != 0)
{
if(isValidEmailAddress(email))
{
$("#validEmail").css({
"background-image": "url('validYes.png')"
});
} else {
$("#validEmail").css({
"background-image": "url('validNo.png')"
});
}
} else {
$("#validEmail").css({
"background-image": "none"
});
}
});
});
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(emailAddress);
}
</script>
<style>
#validEmail
{
margin-top: 4px;
margin-left: 9px;
position: absolute;
width: 16px;
height: 16px;
}
.text
{
font-family: Arial, Tahoma, Helvetica;
}
</style>
<title>Live Email Validation with jQuery Demo</title>
</head>
<body>
<div class="text"><h1>Reynoldsftw.com - Live Email Validation</h1><h2>Type in an email address in the box below:</h2></div>
<div><input type="text" id="validate" width="30"><span id="validEmail"></span></div>
<div class="text"><P>More script and css style
Источник: htmldrive.com
Я бы порекомендовал Verimail.js , он также имеет плагин JQuery .
Почему? Verimail поддерживает следующее:
Таким образом, помимо проверки, Verimail.js также дает вам предложения. Поэтому, если вы введете письмо с неправильным TLD или доменом, очень похожим на обычный домен электронной почты (hotmail.com, gmail.com и т. Д.), Оно может обнаружить это и предложить исправление.
Примеры:
И так далее..
Чтобы использовать его с jQuery, просто включите verimail.jquery.js на свой сайт и запустите следующую функцию:
$("input#email-address").verimail({
messageElement: "p#status-message"
});
Элемент сообщения - это элемент, в котором будет показано сообщение. Это может быть что угодно: от «Ваш адрес электронной почты недействителен» до «Вы имели в виду ...?».
Если у вас есть форма и вы хотите ограничить ее, чтобы она не могла быть отправлена, если электронное письмо не является действительным, тогда вы можете проверить статус, используя функцию getVerimailStatus, как показано ниже:
if($("input#email-address").getVerimailStatus() < 0){
// Invalid
}else{
// Valid
}
Эта функция возвращает целочисленный код состояния в соответствии с объектом Comfirm.AlphaMail.Verimail.Status. Но общее правило состоит в том, что любые коды ниже 0 являются кодами, указывающими на ошибки.
.getVerimailStatus()
не возвращает числовые коды состояния, только строковое значение success
, error
или , возможно pending
(не проверял последний).
function isValidEmailAddress(emailAddress) {
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
return pattern.test(emailAddress);
};
if( !isValidEmailAddress( emailaddress ) ) { /* do stuff here (email is invalid) */ }
это было предоставлено пользователем Luca Filosofi в этом ответе на этот ответ
@
символ с другим @
символом. Вот так @@
, иначе вы получите ошибку сборки.
Очень простое решение - использовать проверку html5:
<form>
<input type="email" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">
<input type="submit">
</form>
Это выполняет более тщательную проверку, например, проверяет наличие последовательных точек в имени пользователя, таких как john..doe @ example.com
function isValidEmail(email)
{
return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email)
&& /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email);
}
См проверить адрес электронной почты с помощью регулярного выражения в JavaScript .
Как уже упоминали другие, вы можете использовать регулярное выражение, чтобы проверить, соответствует ли адрес электронной почты шаблону. Но у вас все еще могут быть электронные письма, которые соответствуют шаблону, но я все еще отказываюсь или поддельные электронные письма спама.
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
Вы можете использовать API, который проверит, является ли адрес электронной почты реальным и активным в данный момент.
var emailAddress = "foo@bar.com"
response = $.get("https://isitarealemail.com/api/email/validate?email=" +
emailAddress,
function responseHandler(data) {
if (data.status === 'valid') {
// the email is valid and the mail box is active
} else {
// the email is incorrect or unable to be tested.
}
})
Для получения дополнительной информации см. Https://isitarealemail.com или сообщение в блоге.
Если у вас есть базовая форма, просто введите тип адреса электронной почты:
<input type="email" required>
Это будет работать для браузеров, которые используют атрибуты HTML5, и тогда вам даже не нужен JS. Простое использование проверки электронной почты даже с некоторыми из приведенных выше сценариев мало что даст, так как:
some@email.com so@em.co my@fakemail.net
и т. д. Все будут подтверждены как "настоящие" электронные письма. Таким образом, было бы лучше убедиться, что пользователь должен ввести свой адрес электронной почты дважды, чтобы убедиться, что он вводит один и тот же адрес. Но гарантировать, что адрес электронной почты является реальным, было бы очень сложно, но очень интересно увидеть, был ли путь. Но если вы просто убедитесь, что это электронное письмо, придерживайтесь ввода HTML5.
Это работает в FireFox и Chrome. Это может не работать в Internet Explorer ... Но Internet Explorer отстой. Итак, вот что ...
Проблема, с которой я столкнулся при использовании ответа Фабиана, заключается в его реализации в виде MVC из-за @
символа Razor . Вы должны включить дополнительный@
символ, чтобы избежать его, например, так:@@
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
Я не видел этого в другом месте на этой странице, поэтому я подумал, что это может быть полезно.
Вот ссылка от Microsoft, описывающая его использование.
Я только что протестировал приведенный выше код и получил следующее js:
function validateEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
Который делает именно то, что должен делать.
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
Что происходит с вашим кодом?
@
символ в регулярном выражении в .cshtml
. Обычно он пытается обработать все после @
символа как код бритвы, но двойное @@
препятствует этому.
function isValidEmail(emailText) {
var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
return pattern.test(emailText);
};
Используйте как это:
if( !isValidEmail(myEmail) ) { /* do things if myEmail is valid. */ }
<script type = "text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type = "text/javascript">
function ValidateEmail(email) {
var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
return expr.test(email);
};
$("#btnValidate").live("click", function () {
if (!ValidateEmail($("#txtEmail").val())) {
alert("Invalid email address.");
}
else {
alert("Valid email address.");
}
});
</script>
<input type = "text" id = "txtEmail" />
<input type = "button" id = "btnValidate" value = "Validate" />
Приземлился тут ..... попал сюда: https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
... который предоставил следующее регулярное выражение:
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
... который я нашел благодаря заметке о плагине jQuery Validation: https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue
Таким образом, обновленная версия @Fabian «s ответ будет:
function IsEmail(email) {
var regex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return regex.test(email);
}
надеюсь, это поможет
john..doe@example.com
но хотел бы, чтобы это было ложно
использовать этот
if ($this.hasClass('tb-email')) {
var email = $this.val();
var txt = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!txt.test(email)) {
e.preventDefault();
$this.addClass('error');
} else {
$this.removeClass('error');
}
}
Ошибка в плагине проверки Jquery Validation Только проверяется с помощью @, чтобы изменить это
изменить код на это
email: function( value, element ) {
// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
// Retrieved 2014-01-14
// If you have a problem with this implementation, report a bug against the above spec
// Or use custom methods to implement your own email validation
return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}
Для тех, кто хочет использовать более удобное в обслуживании решение, чем разрушительные совпадения RegEx с длиной светового года, я написал несколько строк кода. Те, кто хочет сохранить байты, придерживаются варианта RegEx :)
Это ограничивает:
В любом случае, утечка все еще возможна, поэтому убедитесь, что вы сочетаете это с проверкой на стороне сервера + проверкой электронной почты.
Вот JSFiddle
//validate email
var emailInput = $("#email").val(),
emailParts = emailInput.split('@'),
text = 'Enter a valid e-mail address!';
//at least one @, catches error
if (emailParts[1] == null || emailParts[1] == "" || emailParts[1] == undefined) {
yourErrorFunc(text);
} else {
//split domain, subdomain and tld if existent
var emailDomainParts = emailParts[1].split('.');
//at least one . (dot), catches error
if (emailDomainParts[1] == null || emailDomainParts[1] == "" || emailDomainParts[1] == undefined) {
yourErrorFunc(text);
} else {
//more than 2 . (dots) in emailParts[1]
if (!emailDomainParts[3] == null || !emailDomainParts[3] == "" || !emailDomainParts[3] == undefined) {
yourErrorFunc(text);
} else {
//email user
if (/[^a-z0-9!#$%&'*+-/=?^_`{|}~]/i.test(emailParts[0])) {
yourErrorFunc(text);
} else {
//double @
if (!emailParts[2] == null || !emailParts[2] == "" || !emailParts[2] == undefined) {
yourErrorFunc(text);
} else {
//domain
if (/[^a-z0-9-]/i.test(emailDomainParts[0])) {
yourErrorFunc(text);
} else {
//check for subdomain
if (emailDomainParts[2] == null || emailDomainParts[2] == "" || emailDomainParts[2] == undefined) {
//TLD
if (/[^a-z]/i.test(emailDomainParts[1])) {
yourErrorFunc(text);
} else {
yourPassedFunc();
}
} else {
//subdomain
if (/[^a-z0-9-]/i.test(emailDomainParts[1])) {
yourErrorFunc(text);
} else {
//TLD
if (/[^a-z]/i.test(emailDomainParts[2])) {
yourErrorFunc(text);
} else {
yourPassedFunc();
}}}}}}}}}
Вы можете использовать jQuery Validation, и в одной строке HTML вы можете проверить электронную почту и сообщение проверки электронной почты:type="email" required data-msg-email="Enter a valid email account!"
Вы можете использовать параметр data-msg-email, чтобы разместить персонализированное сообщение или иначе не размещать этот параметр, и будет отображаться сообщение по умолчанию: «Пожалуйста, введите действительный адрес электронной почты».
Полный пример:
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<p>
<label for="cemail">E-Mail (required)</label>
<input id="cemail" type="email" name="email" required data-msg-email="Enter a valid email account!">
</p>
<p>
<input class="submit" type="submit" value="Submit">
</p>
</fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>
if($("input#email-address").getVerimailStatus() < 0) {
(incorrect code)
}
if($("input#email-address").getVerimailStatus() == 'error') {
(right code)
}
checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. ui@jquery.com" );
Ссылка: JQUERY UI ВЕБ-САЙТ
вы должны увидеть это: jquery.validate.js , добавьте его в свой проект
используя это так:
<input id='email' name='email' class='required email'/>
Еще один простой и полный вариант:
<input type="text" id="Email"/>
<div id="ClasSpan"></div>
<input id="ValidMail" type="submit" value="Valid"/>
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
$("#ValidMail").click(function () {
$('span', '#ClasSpan').empty().remove();
if (IsEmail($("#Email").val())) {
//aqui mi sentencia
}
else {
$('#ClasSpan').append('<span>Please enter a valid email</span>');
$('#Email').keypress(function () {
$('span', '#itemspan').empty().remove();
});
}
});
Вы можете создать свою собственную функцию
function emailValidate(email){
var check = "" + email;
if((check.search('@')>=0)&&(check.search(/\./)>=0))
if(check.search('@')<check.split('@')[1].search(/\./)+check.search('@')) return true;
else return false;
else return false;
}
alert(emailValidate('your.email@yahoo.com'));
Упрощенный, который я только что сделал, делает то, что мне нужно. Ограничено только буквенно-цифровыми, точка, подчеркивание и @.
<input onKeyUp="testEmailChars(this);"><span id="a"></span>
function testEmailChars(el){
var email = $(el).val();
if ( /^[a-zA-Z0-9_@.-]+$/.test(email)==true ){
$("#a").html("valid");
} else {
$("#a").html("not valid");
}
}
Сделано с помощью других
Это регулярное выражение предотвращает дублирование доменных имен, таких как abc@abc.com.com.com.com, и разрешает использовать домен только два раза, например abc@abc.co.in. Это также не позволяет делать запись с номера, такого как 123abc@abc.com
regexp: /^([a-zA-Z])+([a-zA-Z0-9_.+-])+\@(([a-zA-Z])+\.+?(com|co|in|org|net|edu|info|gov|vekomy))\.?(com|co|in|org|net|edu|info|gov)?$/,
Всего наилучшего !!!!!
Проверяйте электронную почту во время набора, с обработкой состояния кнопки.
$("#email").on("input", function(){
var email = $("#email").val();
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (!filter.test(email)) {
$(".invalid-email:empty").append("Invalid Email Address");
$("#submit").attr("disabled", true);
} else {
$("#submit").attr("disabled", false);
$(".invalid-email").empty();
}
});
если вы используете проверку JQuery
Я создал метод, emailCustomFormat
который использовал regex
для моего формата Custm вы можете изменить его в соответствии с вашими требованиями
jQuery.validator.addMethod("emailCustomFormat", function (value, element) {
return this.optional(element) || /^([\w-\.]+@@([\w-]+\.)+[\w-]{2,4})?$/.test(value);
}, abp.localization.localize("FormValidationMessageEmail"));// localized message based on current language
тогда вы можете использовать это так
$("#myform").validate({
rules: {
field: {
required: true,
emailCustomFormat : true
}
}
});
это регулярное выражение принять
abc@abc.abc
, abc@abc.abcd
Но это не
abc@abc
, abc@abc.a
,abc@abc.abcde
надеюсь, это поможет вам