Heim >Web-Frontend >js-Tutorial >Verwenden Sie reguläre Ausdrücke, um E-Mail-Adressen/E-Mail-Adressen zu filtern

Verwenden Sie reguläre Ausdrücke, um E-Mail-Adressen/E-Mail-Adressen zu filtern

php中世界最好的语言
php中世界最好的语言Original
2018-05-24 10:13:1611332Durchsuche

Dieses Mal werde ich Ihnen die Vorsichtsmaßnahmen für die Verwendung von regulären Ausdrücken zum Filtern von E-Mail-Postfächern/E-Mail-Adressen und die Verwendung regulärer Ausdrücke zum Filtern von E-Mail-Postfächern/E-Mail-Adressen vorstellen Werfen Sie einen Blick auf praktische Fälle.

Bei der Benutzerregistrierung werden häufig reguläre Ausdrücke für E-Mail/E-Mail-Adressen verwendet. In diesem Artikel werden mehrere Lösungen aufgeführt. Sie können die für Ihre Projektsituation am besten geeignete Lösung auswählen

Kurz gesagt

Bei der Registrierung von Benutzern wird häufig E-Mail verwendet /Regulärer Ausdruck für E-Mail-Adresse. In diesem Artikel werden mehrere Optionen aufgeführt. Sie können je nach Projektsituation die am besten geeignete Option auswählen.

Verwenden Sie reguläre Ausdrücke, um E-Mail-Adressen/E-Mail-Adressen zu filtern

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 anzugeben:

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

Vollständiger Testcode

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Testergebnis:

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖@42du.cn&#39;) = false;
pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖@42du.cn&#39;) = false;

Beschreibung von Lösung 1

Lösung 1 ist die am häufigsten verwendete E-Mail-Lösung zur Überprüfung regulärer 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

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Testergebnisse:

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = true;
pattern.test(&#39;毛三胖@42du.cn&#39;) = true;

Option 3 (Sicherheit)

Vor dem Aufkommen der Handy-Verifizierungscodes war fast die E-Mail-Verifizierung die einzige Voraussetzung, 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. Wir können 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

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖dd@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Testergebnisse:

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = false;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖dd@42du.cn&#39;) = false;

Obwohl die Überprüfung nach Schema 3 dies sicherstellen kann Sicherheitseigenschaft, aber wenn die Whitelist zu lang ist, ist die Musterzeichenfolge zu lang. 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.

Die E-Mail-Verifizierungsfunktion ist jetzt wie folgt verfügbar:

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< domains.length; i++) {
      if(domain == domains[i]) {
        return true;
      }
    }
  }
  return false;
}
// 输出 true
isEmail(cn42du@163.com);

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie unter Anderem Verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So verwenden Sie benutzerdefinierte Vue.js-Ereignisse für Formulareingabekomponenten

Vue verwendet die folgende Tabelle um das Array zu ändern. Was zu tun ist, wenn die Seite nicht gerendert wird

Das obige ist der detaillierte Inhalt vonVerwenden Sie reguläre Ausdrücke, um E-Mail-Adressen/E-Mail-Adressen zu filtern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn