gpt4 book ai didi

javascript - Email Validation...提倡使用+,你写这个会有多尴尬?

转载 作者:行者123 更新时间:2023-11-30 18:54:12 26 4
gpt4 key购买 nike

我充分利用了 GMail 的通配符功能(用户名+wildcard@gmail.com)。不幸的是,似乎大多数开发人员都不了解 + 在电子邮件地址中有效。这使得有时尝试取消订阅成为一件真正的苦差事。

TicketMaster例如...您立即注意到他们甚至懒得转义电子邮件地址,因此文本字段默认为“user wilcard@gmail.com”。没问题,我们可以手动添加 + 。单击“提交”后,您会注意到验证使您停在正轨上。现在怎么办?

大多数用户将不得不进一步联系 TicketMaster 并尝试解释情况。我打开 FireBug 进行调查。就在那时,我注意到这个高达 74 行 的电子邮件验证功能具有如此多的冗余,这很荒谬。我最喜欢的检查是第 20 行,通知用户他/她的电子邮件不能有多个@。虚幻。我第二喜欢的部分是使用的两个正则表达式!

想象一下……有人为此付了钱……从表面上看,他们是按行数付钱的。

//Validates the email
function validateOptoutEmail(object) {
var emailStr = object.value;
if(emailStr == '' || emailStr == null) {
alert('Email can not be empty. Please provide email');
object.value = '';
object.focus();
return false;
} else if(Trim(emailStr).length == 0) {
alert('Email can not be empty. Please provide email');
object.value = '';
object.focus();
return false;
} else {
var atcount=0;
for(var i=0;i<emailStr.length;i++) {
if(emailStr.charAt(i)=='@') atcount++;
}
if(atcount>1) {
alert('Invalid email. Email cannot have more than one @');
object.value = '';
object.focus();
return false;
}

if(emailStr.indexOf('.') == -1) {
alert('Invalid email. Email must have one dot');
object.value = '';
object.focus();
return false;
}
if(emailStr.indexOf('..')!= -1) {
alert('Invalid email. Email cannot have consecutive dots');
object.value = '';
object.focus();
return false;
}
var dotpos=0;
for(var i=dotpos;i< emailStr.length;i++) {
var ichar=emailStr.charAt(i);
if(ichar=='.') dotpos=i;
}
for(var i=dotpos+1;i< emailStr.length;i++) {
var ichar=emailStr.charAt(i);
if((!isNaN(ichar)) || (ichar == '_')) {
alert('Invalid email. Email cannot have numbers or _ after dot');
object.value = '';
object.focus();
return false;
}
}
var pattern2=/^([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
var pattern1=/^[0-9a-zA-Z\-\_.]+@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
if (pattern1.test(emailStr)) {
if(pattern2.test(emailStr)) {
return true;
} else {
alert('Invalid email');
object.value = '';
object.focus();
}
return true;
} else {
alert('Invalid email');
object.value = '';
object.focus();
return false;
}
alert('Invalid email');
object.value = '';
object.focus();
return false;
}
}

我最终只是在 FireBug 中放置了一个断点,并更改了传递给验证函数的电子邮件地址的值。从那里一切正常......

综上所述,我们怎样才能知道 + 在电子邮件地址中有效?我常常无法使用电子邮件地址我想将其用于某些网站,因为开发人员根本不知道什么是有效的电子邮件地址。

最佳答案

将它们指向 rfc: https://www.rfc-editor.org/rfc/rfc5322#page-10

3.2.3 声明“+”是一个有效的原子

关于javascript - Email Validation...提倡使用+,你写这个会有多尴尬?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com