Ich möchte wissen, ob ich mit regulären Ausdrücken E-Mails aus den folgenden Zeichenfolgen extrahieren kann?
Das folgende RE-Muster ist .*@.*passen zu allen Saiten. Es hat mit einigen Saiten gut funktioniert, wenn auch nicht mit allen.
Ich möchte alle Zeichenfolgen abgleichen, die mit dem E-Mail-Muster übereinstimmen, einschließlich aller Domänen wie (some-url.com) oder (some-url.co.id)
Sie sollten einfach einen guten E-Mail-Regex suchen und ihn dann auf Ihren Text anwenden, z. B. hier: emailregex.com
– Tim Biegeleisen
23. Februar 2017 um 5:32 Uhr
@TimBiegeleisen hat Recht. Dies ist wahrscheinlich die häufigste Verwendung für Regex. Es gibt einige erstaunlich komplexe Muster oder ziemlich einfache. Ein schnelles Googlen hätte dir die schnellste Antwort gegeben.
– Normaler Jo
23. Februar 2017 um 6:27 Uhr
Alle bisher auf dieser Seite geteilten Muster sind grob vereinfacht und würden viele ungültige E-Mail-Adressen weitergeben und einige gute durchfallen lassen.
– Normaler Jo
23. Februar 2017 um 6:29 Uhr
Ambris Pathak
Sie können eine Funktion mit Regex erstellen /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/ um E-Mail-IDs aus langem Text zu extrahieren
function extractEmails (text) {
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi);
}
Die Regex im obigen Code-Snippet stimmt zwar mit den meisten E-Mail-Mustern überein, aber wenn Sie immer noch >99 % der E-Mail-Muster abgleichen müssen, einschließlich der Grenzfälle (wie „+“ in der E-Mail), verwenden Sie das Regex-Muster wie unten gezeigt
Skript in Aktion: Ausführen, um Ergebnis zu sehen
var text = `boleh di kirim ke email saya [email protected] tks... boleh minta kirim ke [email protected]. [email protected]. .
[email protected] Senior Quantity Surveyor
[email protected], terimakasih bu Cindy Hartanto
[email protected] saya mau dong bu cindy
[email protected]
Hi Cindy ...pls share the Salary guide to [email protected] thank a`;
function extractEmails ( text ){
return text.match(/(?:[a-z0-9+!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/gi);
}
$("#emails").text(extractEmails(text));
Nun, eigentlich erfasst auch die Regex in der Antwort [email protected] Um dies zu vermeiden, ändern Sie den regulären Ausdruck wie folgt: ([a-zA-Z0-9._-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z0-9_-]+)
@SS_flair Sie können die extrahierte E-Mail-ID mit jeder verfügbaren Ersetzungsmethode bereinigen
– Ambrish Pathak
1. September 2020 um 10:19 Uhr
Nur um zu lernen: Warum brauchen Sie den AZ-Teil, wenn Sie das i-Flag (Groß-/Kleinschreibung) verwenden?
– Umarmungen
20. Januar 2021 um 18:11 Uhr
Beachten Sie, dass diese Regex anscheinend nicht akzeptiert wird + als gültiges Zeichen. Siehe Sanjeev Sivas Antwort für eine leichte Optimierung: stackoverflow.com/a/54340560/1196465
– David Gay
16. April 2021 um 19:50 Uhr
Ich möchte die Antwort von @Ambrish Pathak ergänzen:
Entsprechend Wikipediaeine E-Mail-Adresse kann auch + Zeichen akzeptieren
Das können sie auf jeden Fall. Google Mail unterstützt sogar das Hinzufügen von: [email protected] in Ihre E-Mail. Ich benutze es die ganze Zeit, wenn ich mehrere Benutzer (mit eindeutigen E-Mails) erstellen und alle E-Mails im selben Konto erhalten muss
– Rasmus Puls
16. September 2020 um 8:11 Uhr
[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+ hat bei mir funktioniert, Sie können das Ergebnis hier überprüfen regex101 gespeicherte Regex.
Es ist wirklich nur zweimal das gleiche Muster, getrennt durch ein @ Schild.
Das Muster ist 1 oder mehr Vorkommen von:
a-z: beliebiger Kleinbuchstabe
A-Z: beliebiger Großbuchstabe
0-9: beliebige Ziffer
-_.: ein Bindestrich, ein Unterstrich oder ein Punkt
Wenn es einige E-Mails verpasst hat, fügen Sie fehlende Zeichen hinzu und es sollte den Zweck erfüllen.
Bearbeiten
Ich habe es zuerst nicht bemerkt, aber als ich zu dem ging Regex101-Linkdort ist ein Erläuterung Abschnitt in der oberen rechten Ecke des Bildschirms, der erklärt, was der reguläre Ausdruck findet.
Während der komplexeste reguläre Ausdruck für die meisten Fälle der E-Mail-Verifizierung nicht erforderlich ist, ist dieser zu stark vereinfacht. Es passt zum Beispiel user@. oder .@_.
– Normaler Jo
23. Februar 2017 um 6:25 Uhr
Was soll ich sagen, es stimmt mit allen E-Mail-Adressen in dem vom OP bereitgestellten Beispiel überein. Wenn sie ein vollständigeres Beispiel bereitstellen, passe ich es bei Bedarf gerne an.
– Mickaël Derriey
23. Februar 2017 um 6:39 Uhr
Ich kann das verstehen, aber das Problem ist, dass die Leute, wenn es mit einem Test übereinstimmt, einfach erwarten, dass es mit allem übereinstimmt. Der Fehler liegt beim OP, dass es keine einfache Google-Suche durchgeführt hat, die wahrscheinlich beliebte Ergebnisse von dieser Site zurückgegeben hätte.
– Normaler Jo
23. Februar 2017 um 6:47 Uhr
Hallo, danke fürs Teilen! Ich habe Ihre Demo aktualisiert, um zu definieren, dass E-Mails nur mit Buchstaben enden dürfen 🙂 [a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+[a-zA-Z]
– Delphine
10. August 2017 um 11:35 Uhr
+ Zeichen sind in E-Mail-Adresse vor dem gültig @. das deckt das nicht ab.
– Benutzer2924019
10. Oktober 2018 um 13:36 Uhr
Sie können Folgendes verwenden regulärer Ausdruck um alle E-Mail-Adressen zu erfassen.
Wenn Sie möchten, können Sie außerdem nur die E-Mails erfassen, die einen bestimmten Domänennamen enthalten (z. B. irgendeine-url.com) und um das zu erreichen, müssen Sie nur die ersetzen \w+\.\w+ Teil nach <domain> mit Ihrem Wunschdomainnamen. so wäre es (?<name>[\w.]+)\@(?<domain>outlook.com)(\.\w+)?
Sie sollten einfach einen guten E-Mail-Regex suchen und ihn dann auf Ihren Text anwenden, z. B. hier: emailregex.com
– Tim Biegeleisen
23. Februar 2017 um 5:32 Uhr
@TimBiegeleisen hat Recht. Dies ist wahrscheinlich die häufigste Verwendung für Regex. Es gibt einige erstaunlich komplexe Muster oder ziemlich einfache. Ein schnelles Googlen hätte dir die schnellste Antwort gegeben.
– Normaler Jo
23. Februar 2017 um 6:27 Uhr
Alle bisher auf dieser Seite geteilten Muster sind grob vereinfacht und würden viele ungültige E-Mail-Adressen weitergeben und einige gute durchfallen lassen.
– Normaler Jo
23. Februar 2017 um 6:29 Uhr