RegEx gesucht

Raven280438

Erfahrenes Mitglied
Hi,

ich suche einen regulären Ausdruck für die Funktion preg_match() mit dem überprüft wird, ob ein String die Form name@host.tld oder @host.tld hat. (also eins von beiden, sonst false)

Reguläre Ausdrücke sind für mich ein Buch mit sieben Siegeln



Gruß
 
Hier mal einer der es zwar tun sollte, zur vernuenftigen Erkennung von Mail-Addressen aber doch etwas zu generisch sein sollte.
Code:
.*@.*\..*
 
OK vielen Dank.

Ich hab den Ausdruck jetzt erweitert, dass wirklich nur solche Zeichen vorkommen dürfen, die auch in einer E-Mail Adresse oder Domain vorkommen.

Mein Ausdruck sieht jetzt so aus:
/([a-zA-Z0-9]|).*@[a-zA-Z0-9].*\.[a-zA-Z0-9].*/

Ist das so weit in Ordnung?


Gruß
 
Zuletzt bearbeitet:
/^(|([a-z0-9]([-.\w]*[a-z0-9]))*@(([a-z0-9])+([-\w]*[a-z0-9])*\.)+[a-z]{2,6})$/i
oder bei deiner Lösung evtl. noch auf . und - eingehen
 
Anstatt der *, die "kann mehrfach, muss aber gar nicht" ausagen, würde ich + oder Minima-Quantifizierer {x,} empfehlen, des Weiteren hilft ein non-fetching Subpattern-Modifikator, Resourcen zu sparen. Dieser sieht standardmäßig so aus:
(?:subpattern). Die von drucko vorgeschlagenen An- und Ausführungszeichen sind zwangsweise notwendig, um die Prüfung mit dem regulären Ausdruck nicht manipulieren zu können.

Code:
(?:[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])+)\])

Dieser Regex ist mir vor einiger Zeit mal über den Weg gelaufen, leider weiß ich nicht mehr, woher ich ihn habe... Hat jedenfalls bisher ziemlich effektiv funktioniert.
 
Zurück