GMail のワイルドカード機能 (username+wildcard@gmail.com) を最大限に活用しています。+
残念ながら、ほとんどの開発者は、電子メール アドレスで有効であることを理解していないようです。これにより、購読を解除しようとすることが時々本当の雑用になります.
たとえば、 TicketMasterを例にとると、彼らは電子メール アドレスをわざわざエスケープしていないことにすぐに気付くので、テキスト フィールドはデフォルトで "user wilcard@gmail.com" になります。問題ありません+
。手動で追加できます。[送信] をクリックすると、検証によってすぐに停止することがわかります。今何?
ほとんどのユーザーは、さらに TicketMaster に連絡して状況を説明する必要があります。調査するために FireBug を開きました。そのとき、ばかげているほどの冗長性を備えた、なんと74 行もの電子メール検証機能に気付きました。私のお気に入りのチェックは 20 行目で、ユーザーに自分のメールアドレスがcannot have more than one @
. 非現実的。私の 2 番目のお気に入りは、使用されている 2 つの正規表現です。
想像してみてください...誰かがこれに対してお金を支払われました...そして、見た目から、彼らは行数によって支払われました.
//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 にブレーク ポイントを配置し、検証関数に渡される電子メール アドレスの値を変更しました。そこから、すべてがうまくいきました...
とはいえ、電子メール アドレスで有効な単語をどのように広めればよいでしょうか。+
開発者が有効な電子メール アドレスを構成するものを認識していないため、特定の Web サイトで使用したい電子メール アドレスを使用できないことがよくあります。