Dieses Mal werde ich Ihnen die Implementierung der regelmäßigen Filterung von JS-E-Mail-Postfächern/E-Mail-Adressen vorstellen. Was sind die Vorsichtsmaßnahmen für die regelmäßige Filterung von JS-E-Mail-Postfächern/E-Mail-Adressen? .
Kurz gesagt
Bei der Benutzerregistrierung wird häufig der reguläre Ausdruck der E-Mail/E-Mail-Adresse verwendet. In diesem Artikel werden mehrere Optionen aufgeführt. Sie können je nach Projektsituation die am besten geeignete Option auswählen.
Option 1 (häufig verwendet)
Die Regeln sind wie folgt definiert:
in Großbuchstaben Es beginnt mit Buchstaben [A-Z], Kleinbuchstaben [a-z], Zahlen [0-9], Unterstrich [_], Minuszeichen [-] und Punkt [.] und muss einmal oder mehrmals wiederholt werden mal [+].
muss das @-Symbol in der Mitte enthalten.
@ müssen Großbuchstaben [A-Z], Kleinbuchstaben [a-z], Zahlen [0-9], Unterstrich [_], Minuszeichen [-] und Punkt [ folgen .] und muss ein- oder mehrmals wiederholt werden [+].
muss mit einem Punkt [.] enden, der 2 bis 4 Ziffern von Groß- und Kleinbuchstaben [A-Za-z]{2,4} verbindet.
Verwenden Sie die oben genannten Regeln, um den folgenden regulären Ausdruck zu erhalten:
var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
Vollständiger Testcode
nbsp;HTML> <meta> <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title> <p></p> <script> var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";"); w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";"); w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";"); w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";"); w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";"); w("pattern.test('毛三胖@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";"); function w(val) { document.getElementById("main").innerHTML += val +"<br />"; } </script>
Testergebnis:
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163 . com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = false;
pattern. test ('Mao Sanpang@42du.cn') = false;
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test(' ifat3@42du.online') = false;
pattern.test('Mao Sanpang@42du.cn') = false;
Anleitung für Option 1
Schema 1 ist das am häufigsten verwendete E-Mail-Überprüfungsschema für reguläre Ausdrücke und eignet sich für die meisten Anwendungsszenarien. Wie aus dem obigen Test hervorgeht, unterstützt dieser Ausdruck keine Domänennamen, die auf .online und .store enden. Wenn Sie mit dieser Art von Domainnamen (mehr als 4 Ziffern) kompatibel sein müssen, passen Sie einfach den Einschränkungsteil am Ende des regulären Ausdrucks {2,4} an (zum Beispiel: {2,8}). Ein weiteres Problem besteht darin, dass E-Mail-Benutzernamen keine chinesischen Zeichen enthalten dürfen.
Option 2 (überarbeitete Option 1)
Die Regeln werden wie folgt ergänzt:
Benutzernamen können Chinesisch enthalten [u4e00 -u9fa5 ]
Das Ende des Domainnamens kann bis zu 8 Zeichen lang sein {2,8}
Der aktualisierte reguläre Ausdruck lautet wie folgt folgt:
var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
Vollständiger Testcode
nbsp;HTML> <meta> <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title> <p></p> <script> var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/; w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";"); w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";"); w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";"); w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";"); w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";"); w("pattern.test('毛三胖@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";"); function w(val) { document.getElementById("main").innerHTML += val +"<br />"; } </script>
Testergebnis:
pattern.test('cn42du@163.com') = true;
pattern .test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test(' ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = true;
pattern.test('Mao Sanpang@42du.cn') = true;
Option 3 (Sicherheit)
Bevor der Mobiltelefon-Verifizierungscode erschien, war die E-Mail-Verifizierung fast die einzige Bedingung, um die Einzigartigkeit des Benutzers sicherzustellen . Das Aufkommen temporärer Postfächer (auch 10-Minuten-Postfächer oder Wegwerfpostfächer genannt) macht den Mechanismus der Postfachüberprüfung und Kontoaktivierung bedeutungslos. Die Adressen temporärer E-Mail-Adressen sind nicht aufzählbar, daher können wir eine Whitelist nur verwenden, um nur einer begrenzten Anzahl von E-Mail-Domänennamen die Überprüfung zu ermöglichen.
Zusätzliche Regeln gemäß Option 1:
Der E-Mail-Domänenname darf nur 163.com, qq.com oder 42du.cn sein.
Der reguläre Ausdruck wird wie folgt angegeben:
var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
Vollständiger Testcode
nbsp;HTML> <meta> <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title> <p></p> <script> var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/; w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";"); w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";"); w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";"); w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";"); w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";"); w("pattern.test('毛三胖dd@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";"); function w(val) { document.getElementById("main").innerHTML += val +"<br />"; } </script>
Testergebnis:
pattern.test('cn42du@163.com') = true; pattern.test('ifat3@sina.com.cn') = false; pattern.test('ifat3.it@163.com') = true; pattern.test('ifat3_-.@42du.cn') = true; pattern.test('ifat3@42du.online') = false; pattern.test('毛三胖dd@42du.cn') = false;
Obwohl die Überprüfung nach Schema 3 die Sicherheit gewährleisten kann, wenn die Whitelist ebenfalls vorhanden ist long führt dazu, dass die Musterzeichenfolge zu lang ist. Zu diesem Zeitpunkt können Sie die Whitelist für E-Mail-Domänennamen als Array schreiben, reguläre Ausdrücke für die vorläufige Überprüfung verwenden und die Whitelist für die sekundäre Überprüfung des Domänennamens verwenden.
现给出邮箱验证函数如下:
var isEmail = function (val) { var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com","42du.cn"]; if(pattern.test(val)) { var domain = val.substring(val.indexOf("@")+1); for(var i = 0; i<p style="text-align: left;">上述isEmail()函数列举了常用的11种邮箱域名,大家可以根据需要适当补充或删减。</p><p>相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!</p><p>推荐阅读:</p><p><a href="http://www.php.cn/js-tutorial-398128.html" target="_blank">JS数组方法使用步骤详解</a><br></p><p><a href="http://www.php.cn/js-tutorial-398124.html" target="_blank">行内元素padding和margin在什么情况下无效</a><br></p>
Das obige ist der detaillierte Inhalt vonImplementierung der regelmäßigen Filterung von JS-E-Mail-Postfächern/E-Mail-Adressen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!