电子邮件验证不接受仅包含两个字符的域
Email validation not accepting domains with only two characters
我正在使用电子邮件验证脚本,一切都很好,除了用户尝试输入域中只有两个字符的地址,例如 test@me.com 或 temp@ip.com
然后验证触发一个错误,我已经查看了,但看不到这种行为的目标位置,代码如下......
function validate_youremail()
{
var isvalidemailflag = 0;
if(jQuery("#property_mail_email").val() == '')
{
isvalidemailflag = 1;
}else
if(jQuery("#property_mail_email").val() != '')
{
var a = jQuery("#property_mail_email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
//if it's valid email
if(filter.test(a)){
isvalidemailflag = 0;
}else{
isvalidemailflag = 1;
}
}
if(isvalidemailflag)
{
youremail.addClass("error");
youremailInfo.text("Please Enter valid Email Address");
youremailInfo.addClass("message_error2");
return false;
}else
{
youremail.removeClass("error");
youremailInfo.text("");
youremailInfo.removeClass("message_error");
return true;
}
它可能直直地盯着我的脸,但这是漫长的一天:) 谁能指出我正确的方向?
@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+
表示"@",然后是"这些字符中的一个或多个",然后是"这些字符中的一个或多个,点和连字符",然后是"这些字符中的一个或多个"。
这使得它"至少三个字符"。
您可能希望将(该代码段的)中间部分更改为零或更多(即 *
而不是+
)。
不过,表达式仍然被破坏了。我突然想到的问题是,它拒绝了@
之前部分带有+
的电子邮件地址。
根据RFC2822标准进行电子邮件验证。
模式:/[a-z0-9!#$%&'*+/=?^_
{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_ {|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g
来源: 正则表达式
请注意,RFC2822 标准不允许在电子邮件地址中使用大写字符,但您可以轻松地根据自己的目的对其进行调整。
我建议你使用另一个正则表达式。
此正则表达式是从用 C 编写的 PHP 源代码中提取的。
/^(?!(?:(?:'x22?'x5C['x00-'x7E]'x22?)|(?:'x22?[^'x5C'x22]'x22?)){255,})(?!(?:(?:'x22?'x5C['x00-'x7E]'x22?)|(?:'x22?[^'x5C'x22]'x22?)){65,}@)(?:(?:['x21'x23-'x27'x2A'x2B'x2D'x2F-'x39'x3D'x3F'x5E-'x7E]+)|(?:'x22(?:['x01-'x08'x0B'x0C'x0E-'x1F'x21'x23-'x5B'x5D-'x7F]|(?:'x5C['x00-'x7F]))*'x22))(?:'.(?:(?:['x21'x23-'x27'x2A'x2B'x2D'x2F-'x39'x3D'x3F'x5E-'x7E]+)|(?:'x22(?:['x01-'x08'x0B'x0C'x0E-'x1F'x21'x23-'x5B'x5D-'x7F]|(?:'x5C['x00-'x7F]))*'x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*'.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:'[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:']]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:'.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))']))$/i
.test('temp@ip.com');
相关文章:
- javascript函数包含两个元素和web音频api
- 链接问题:下一个字符包含在<a>TinyMce ui TinyMce中的标签
- ng在一页中包含两次相同的部分页面
- 为什么我的捕获括号之外的字符包含在我的正则表达式的匹配项中
- Meteor:如何使用空格键创建包含两个集合数据的树列表
- 电子邮件验证不接受仅包含两个字符的域
- 查找id包含两个子字符串的元素
- 在一个页面中包含两次的脚本中调用函数
- 在包含两个的Javascript数组中选择另一个元素
- Jquery-一个.click事件中包含两个变量
- Javascript 库,一次包含两个项目
- 创建一个包含两个文件 json 的 Angularjs 过滤器
- 如何创建一个包含两个按钮但其中一个被隐藏的登录页面
- JQUERY 如果字符串包含两个单词
- bootstrap包含两次
- 在javascript中包含两个单词的attr id
- 使用Rally SDK 1.33创建一个包含两个findall调用结果的表
- 自动完成由两个特殊字符和两个数据源触发
- match()返回包含两个匹配项的数组,而我期望一个匹配项
- 如何在 JavaScript 模式中包含带有连字符的两个数字