Warum nicht einfach filter_var
verwenden %Vor%BEARBEITEN
%Vor%Jetzt kann ich Sie eine Frage stellen? Was machen diese Räume in Ihrem regulären Ausdruck? : -)
Ich bin ziemlich sicher, dass Leerzeichen in E-Mail-Adressen nicht wirklich gültig sind. Und selbst wenn sie es wären, wären sie nicht in bestimmten Positionen relativ zu den Trennzeichen (wie unmittelbar vor und nach dem Zeichen @
) erforderlich.
Obwohl ich generell der Verwendung von regulären Ausdrücken für E-Mail-Adressen nicht zustimme (senden Sie einfach eine E-Mail mit einem Bestätigungslink - das löst Ihr Problem und dann einige a ), sollten Sie zumindest das Recht nutzen regulärer Ausdruck, wenn Sie dies tun müssen
a Es gibt eine ungezählte Anzahl von absolut gültigen E-Mail-Adressen, die keinen tatsächlichen Account haben.
Wenn Sie regex für das Abgleichen von E-Mails verwenden möchten, werden folgende "sinnvolle" Adressen gefunden.
%Vor%Es ist ziemlich ausführlich, aber wenn Sie nur wollen, wie ich sagte "vernünftige" Adressen zu übergeben - es macht den Job.
bleibt bei einer Adresse wie "example @ somename.irgendwo .com" hängen, da nach dem @ -Symbol nach einem Punkt gesucht wird, der nur aus einer Länge von 2-6 Zeichen besteht.
"Beispiel @ somename-somewhere .com" würde jedoch passen.
Ich empfehle nicht, eine einzige Regex-Lösung für den Job zu verwenden, es sei denn, wie in meinem Fall, möchten Sie nur "sinnvolle" Adressen zulassen.
Es gibt einen ziemlich guten Artikel, der die "korrekte" Bestätigung von E-Mail-Adressen hier behandelt: Ссылка
Mit den neuen domeless-Adressen, die geplant sind, erscheint die Lösung von paxdiablo noch besser
Tags und Links php