电子邮件验证jQuery [重复]
Posted
技术标签:
【中文标题】电子邮件验证jQuery [重复]【英文标题】:email validation jquery [duplicate] 【发布时间】:2012-05-20 22:54:51 【问题描述】:可能重复:JQuery validate e-mail address regex
嗨,我有一个引用电子邮件输入字段的表单中的输入,当用户单击提交按钮时,我想确保电子邮件输入字段值具有这样的正式格式
example@hotmail.com
或
example@gmail.com
或
example@yahoo.com
输入字段是这个
<p>
<label>Email</label>
<input type="text" name="Email"/>
<span class="errorMessage"></span>
</p>
jquery 代码
$(document).ready(function()
$('#suform').on('submit', function(e)
e.preventDefault();
var errorCount = 0;
$('span.errorMessage').text(''); // reset all error mesaage
$('input').each(function()
var $this = $(this);
if($this.val() === '')
var error = 'Please fill ' + $this.prev('label').text(); // take the input field from label
$this.next('span').text(error);
errorCount = errorCount + 1;
);
if(errorCount === 0)
var mobileNumber = $('input[name=MNumber]');
var email = $('input[name=Email]');
if(isNaN(parseFloat(mobileNumber )) && !isFinite(mobileNumber ))
var error = 'Mobile number incorect.';
$('input[name=MNumber]').next('span').text(error);
errorCount = errorCount + 1;
else
var password= $('input[name="Password"]').val();
var repass= $('input[name="RePassword"]').val();
if(password!=repass) // ensrue the two passwords are the same
var error2 = 'Password not matching';
$('input[name="RePassword"]').next('span').text(error2)
errorCount = errorCount + 1;
else
$(this)[0].submit(); // submit form if no error
);
);
我的 html 、 css 和 jquery 代码在这里 code
【问题讨论】:
问题是什么?什么不工作? ***.com/questions/2855865/… 【参考方案1】:你可以使用这个功能:
function validateEmail(email)
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]2,4)?$/;
if( !emailReg.test( email ) )
return false;
else
return true;
【讨论】:
谢谢你,我已经得到答案了 我认为你做错了什么,因为我很肯定这个有效(实际上其他 2 个答案相同) 试试这个例子的代码 h@hotmail.com ,你的代码弄错了【参考方案2】:正则表达式是一种验证方式:
function validateEmail(email)
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[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);
将用户输入的电子邮件传递给此函数,它将检查其格式并相应地返回真或假
【讨论】:
谢谢你,我有答案了【参考方案3】:如果我理解正确,您想验证表单上填写的电子邮件地址:
添加到您的功能中
// validate proper email address
var reg = /^((([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;
if (reg.test(value) == false)
// email invalid, do stuff
else
// email valid, do stuff
此正则表达式检查提供的电子邮件以解决许多许多问题!
已编辑:
你的函数有一些拼写错误,这里是完整的:和working Fiddle!
$(document).ready(function()
// form submit
$('#suform').on('submit', function(e)
// prevent default behavior
e.preventDefault();
// reset errors counter
var errorCount = 0;
// clear error message
$('span.errorMessage').text('');
// run by each input field to check if they are filled
$('input').each(function()
var $this = $(this);
if($this.val() === '')
// take the input field from label
var error = 'Please fill ' + $this.prev('label').text();
$this.next('span').text(error);
errorCount = errorCount + 1;
);
// no errors so far, let continue and validate the contents
if(errorCount === 0)
// get mobile number
var mobileNumber = $('input[name=MNumber]').val();
// get email address
var email = $('input[name=Email]').val();
// get password and password repeat
var password= $('input[name="Password"]').val();
var repass= $('input[name="RePassword"]').val();
// regular expression to validate the email address
var reg = /^((([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;
// try to validate the email
if (reg.test(email) == false)
$('input[name=Email]').next('span').text('Email address is invalid!');
errorCount = errorCount + 1;
else
if(isNaN(parseFloat(mobileNumber )) && !isFinite(mobileNumber ))
var error = 'Mobile number incorect.';
$('input[name=MNumber]').next('span').text(error);
errorCount = errorCount + 1;
else
// ensrue the two passwords are the same
if(password!=repass)
var error2 = 'Password not matching';
$('input[name="RePassword"]').next('span').text(error2);
errorCount = errorCount + 1;
else
$(this)[0].submit(); // submit form if no error
);
);
【讨论】:
??它有效,我有超过 100 个使用该正则表达式的网站。所有正确验证电子邮件地址!我会再次查看您的代码,看看您可能出了什么问题! 我会再试一次,非常感谢您的帮助 试试 ho@hotmail.com ,你的代码弄错了 :( jsfiddle.net/Wiliam_Kinaan/rE5Nr 你有它! working Fiddle 和您的功能已正确修复!查看我的编辑。以上是关于电子邮件验证jQuery [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用jquery的电子邮件验证标签输入(使用标签不是正常输入)[重复]