我的表单中有以下输入:
<input class="input-group-field" id="email" name="email" type="email" size="1" required="">
我正在使用jQuery验证插件在ajax请求之前验证表单。 它工作正常,但为什么这个电子邮件输入有效:
ABC @ ESD
因此,如果我没有添加顶级域名,那么它似乎是一封有效的电子邮件吗?
而abc @ esd。无效
任何想法有什么不对或我能做些什么来防止这种情况?
代码:
if ($("#valForm").valid()) {
// Do Stuff
}
我没有设置任何规则
由于
答案 0 :(得分:2)
创建自定义方法:
$.validator.addMethod('emailtld', function(val, elem){
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!filter.test(val)) {
return false;
} else {
return true;
}
}, '*');
然后,您可以将数据属性“data-rule-emailtld”添加到输入字段:
<input class="input-group-field" id="email" name="email" type="email" size="1" required="" data-rule-emailtld="true">
注意:来自“Sharukh k shaji”的Answer使用正确的正则表达式,但未使用jQuery Validation插件。
答案 1 :(得分:1)
<input class="input-group-field" id="email" name="email" type="email" size="1" required="">
上述代码验证输入的是否是电子邮件。这意味着它只会在之前和之后查找“@”和一些值。
要验证电子邮件,您必须自己进行jquery验证。
var emailValidation = function ( email ) {
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if ( !filter.test( email ) ) {
return false;
} else {
return true;
}}
以上代码是使用regx和jquery进行电子邮件验证的示例。
答案 2 :(得分:1)
显然,是的,快速查找维基百科会产生有趣的结果:Valid adresses as by wikipedia
那么,您是否应该允许RFC规范允许的所有内容?可能不是。首先,因为有些是非常具体的(仅限本地域,您的示例),而其他一些是明显模糊的,如"()<>[]:,;@\\\"!#$%&'*+-/=?^_{}| ~.a"@example.org
(从维基百科中提取),其次通过本书验证(或在本例中,RFC)为您提供页面 - 正式的正则表达式没有人可以阅读或理解。
由于您可能正在使用开箱即用的功能,因此您可以自行决定如何处理它。如果你想调整它,那就选择一个符合99.8%所有地址的正则表达式,可能是100%的客户。如果没有,请接受电子邮件地址固有的怪异。
代码方面,其他答案可能会对“如何”问题提供更多帮助,因为我对该领域缺乏了解。
答案 3 :(得分:-1)
尝试使用此正则表达式/^([\w-.]+@(gmail|yahoo|hotmail)(\.+)?[a-zA-Z])\/?/
并创建验证器方法
$(document).ready(function(){
$.validator.methods.email = function( value, element ) {
var email = /^([\w-.]+@(gmail|yahoo|hotmail)(\.+)?[a-zA-Z])\/?/;
return email.test(value);
}
$('.validate').validate();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js"></script>
<form class="validate">
<input class="input-group-field" id="email" name="email" type="email" required="">
<input class="input-group-field" id="submit" name="submit" type="submit" >
</form>
&#13;