Heim > Artikel > Backend-Entwicklung > PHP verwendet reguläre Ausdrücke, um E-Mail-Adressen zu überprüfen
E-Mails erfordern wie normale Post auch eine Adresse. Der Unterschied zu gewöhnlicher Post besteht darin, dass es sich um eine elektronische Adresse handelt. Alle Benutzer mit Postfächern im Internet verfügen über eine oder mehrere eigene E-Mail-Adressen, und diese E-Mail-Adressen sind alle eindeutig. Der Mailserver sendet jede E-Mail basierend auf diesen Adressen an das Postfach jedes Benutzers. Ob Sie Ihre E-Mail erhalten können, hängt wie bei normaler Post davon ab, ob Sie die richtige E-Mail-Adresse erhalten haben. Eine vollständige Internet-E-Mail-Adresse besteht aus den folgenden zwei Teilen , die im folgenden Format gruppiert sind: Anmeldename@Hostname.Domänenname, getrennt durch ein Symbol „@“, das „at“ (at) darstellt ist der Anmeldename der anderen Partei und auf der rechten Seite steht der vollständige Hostname, der aus dem Hostnamen und dem Domänennamen besteht. Unter diesen besteht der Domänenname aus mehreren Teilen, jeder Teil wird als Subdomäne (Subdomain) bezeichnet und jede Subdomain wird durch einen Punkt „.“ getrennt. Jede Subdomain teilt dem Benutzer einige Informationen über diesen Mailserver mit.
php regulärer passender E-Mail-Code
1. E-Mail bestätigen:
< ?php if (ereg("/^[a-z]([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i; ",$email)){ echo “Your email address is correct!”;} else{ echo "Please try again!"; } ?>
oder
$str = ''; $isMatched = preg_match('/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/', $str, $matches); var_dump($isMatched, $matches);
entspricht dem E-Mail-FormatRegulärer Ausdruck :
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i;
Parsing:
/content/i stellt einen regulären Ausdruck ohne Berücksichtigung der Groß-/Kleinschreibung dar;
^ beginnt mit der Übereinstimmung
$ endet mit der Übereinstimmung
[a-z ] E-Mail-Präfix muss mit einem englischen Buchstaben beginnen
([a-z0-9]*[-_]?[a-z0-9]+)* und _a_2, aaa11, _1_a_2 stimmt überein, aber stimmt nicht mit a1_, aaff_33a_, aaa überein. Wenn es sich um ein Nullzeichen handelt, bedeutet es auch 0 oder mehr.
* steht für 0 oder mehr vorherige Zeichen.
[a-z0-9]* entspricht 0 oder mehr englischen Buchstaben oder Zahlen.
[-_]? entspricht 0 oder 1 „-“, weil „-“ kann nicht fortlaufend erscheinen
[a-z0-9]+ entspricht einem oder mehreren englischen Buchstaben oder Zahlen, da „-“ nicht als Ende verwendet werden kann
@ Es muss @ geben
([a -z0-9]*[-_]?[a-z0-9]+)+ siehe oben ([a-z0-9]*[-_]?[a-z0-9 ]+)* Erklärung, aber es darf nicht leer sein, + bedeutet eins oder mehrere.
[.] Behandeln Sie Sonderzeichen (.) als gewöhnliche Zeichen
[a-z]{2,3}, um 2 bis 3 englische Buchstaben zuzuordnen, normalerweise com oder net usw.
([.][a-z]{2})? Entspricht 0 oder 1 [.][a-z]{2} (wie .cn usw.) Ich weiß nicht, ob der letzte Teil von .com.cn normalerweise ist zweistellig Wenn nicht, ändern Sie bitte {2} in {Anzahl der Anfangswörter, Anzahl der Endwörter}
Dieser reguläre Ausdruck zum Abgleichen von E-Mail-Adressen ist relativ stark, leistungsstark, weitreichend und nützlich für die Erfassung durch Freunde Steig aus.
Das Format des internationalen Domainnamens ist wie folgt:
Der Domainname besteht aus einer beliebigen Kombination des spezifischen Zeichensatzes der jeweiligen Landessprache, englischen Buchstaben, Zahlen und „ -“ (d. h. Bindestrich oder Minuszeichen). Allerdings darf weder der Anfang noch das Ende ein „-“ enthalten und „-“ darf nicht fortlaufend erscheinen. Bei Buchstaben in Domänennamen wird die Groß-/Kleinschreibung nicht beachtet. Der Domainname kann bis zu 60 Byte lang sein (einschließlich der Suffixe .com, .net, .org usw.).
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a- z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i
/content/i bildet eine Formel für einen regulären Ausdruck;
^ Übereinstimmungsanfang
$ Übereinstimmungsende
[a-z] E-Mail-Präfix muss mit einem englischen Buchstaben beginnen
([a-z0-9]*[-_]?[a- z0- 9]+)* stimmt mit _a_2, aaa11, _1_a_2 überein, aber nicht mit a1_, aaff_33a_, aaa. Wenn es sich um ein Nullzeichen handelt, bedeutet es auch 0 oder mehr.
* steht für 0 oder mehr vorherige Zeichen.
[a-z0-9]* entspricht 0 oder mehr englischen Buchstaben oder Zahlen.
[-_]? entspricht 0 oder 1 „-“, weil „-“ kann nicht fortlaufend erscheinen
[a-z0-9]+ entspricht einem oder mehreren englischen Buchstaben oder Zahlen, da „-“ nicht das Ende sein darf
@ Es muss ein @ geben
([a-z0-9] *[-_]?[a-z0-9]+)+ siehe oben ([a-z0-9]*[-_]?[a-z0-9]+) *Erklärung, aber es darf nicht leer sein, + bedeutet eins oder mehrere.
[.] Sonderzeichen (.) wie gewöhnliche Zeichen behandeln
[a-z]{2,3} entspricht 2 bis 3 englischen Buchstaben, normalerweise com oder net usw.
([.][ a-z] {2})? Entspricht 0 oder 1 [.][a-z]{2} (z. B. .cn usw.). Ich weiß nicht, ob der letzte Teil von .com.cn normalerweise zweistellig ist Ändern Sie {2} in {Startwortanzahl, Endwortanzahl}
Perfekter regulärer E-Mail-Ausdruck, mit ausführlicher Erklärung, bitte helfen Sie beim Testen! 2. Extrahieren Sie die E-Mail in der Zeichenfolge :
<?php function getEmail($str) { $pattern = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i"; preg_match_all($pattern,$str,$emailArr); return $emailArr[0]; } $emailstr = "9999@qq.com.cn俺不是米vi地方就开iid邮件列表:fuyongjie@163.com 和hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com"; $emailArr = getEmail($emailstr); echo "<pre class="brush:php;toolbar:false">"; print_r($emailArr); echo ""; ?>
und führen Sie sie wie folgt aus:
Array ( [0] => 9999@qq.com.cn [1] => fuyongjie@163.com [2] => hh@qq.com [3] => fuyongjie.100@yahoo.com [4] => fu-1999@sina.com )
3. Vergleich: Es gibt keinen regulären Ausdruck im zweiten Schritt Das erste ^ und $;
Das obige ist der detaillierte Inhalt vonPHP verwendet reguläre Ausdrücke, um E-Mail-Adressen zu überprüfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!