如何使用JQuery来验证电子邮件地址?
当前回答
jQuery函数验证电子邮件
我真的不喜欢使用插件,特别是当我的表单只有一个需要验证的字段时。我使用这个函数,并在需要验证电子邮件表单字段时调用它。
function validateEmail($email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return emailReg.test( $email );
}
现在用这个
if( !validateEmail(emailaddress)) { /* do stuff here */ }
其他回答
一个非常简单的解决方案是使用html5验证:
<form>
<input type="email" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">
<input type="submit">
</form>
http://jsfiddle.net/du676/56/
这将执行更彻底的验证,例如它检查用户名中的连续点,例如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中使用正则表达式验证电子邮件地址。
Javascript邮件验证MVC/ASP。网
在使用Fabian的答案时,我遇到的问题是在MVC视图中实现它,因为Razor @符号。你必须包含一个额外的@符号来转义它,像这样:@@
避免MVC中的剃刀
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
我在这一页的其他地方没有看到它,所以我想它可能会有帮助。
EDIT
下面是微软提供的一个描述它用法的链接。 我刚刚测试了上面的代码,得到了以下js:
function validateEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
这正是它应该做的。
如果你正在使用jquery验证
我创建了一个方法emailCustomFormat,使用正则表达式为我的自定义格式,你可以改变它来满足你的要求
jQuery.validator.addMethod("emailCustomFormat", function (value, element) {
return this.optional(element) || /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/.test(value);
}, abp.localization.localize("Please_enter_valid_email_message"));// 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
希望这对你有所帮助
你应该看到:jquery.validate.js,把它添加到你的项目
这样使用它:
<input id='email' name='email' class='required email'/>