Regex-E-Mail - Ignoriert führende und nachfolgende Leerzeichen?
Sind wir mit dem folgenden zu tun, eine E-Mail-Validierung ASP.NET:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Wie kann das geändert werden ignoriert führende und nachfolgende Leerzeichen?
Dem eigentlichen trimmen wir im code behandeln postback, aber der validator ist die Auslösung als ungültig, wenn der Benutzer über einen zusätzlichen Raum, oft durch kopieren und einfügen.
Sie sollten dies Lesen: mail.python.org/pipermail/python-list/2006-September/...
Senden einer test-Nachricht ist keine option. Es muss validiert werden, so gut wie möglich auf die form vor der Einreichung.
Senden einer test-Nachricht ist keine option. Es muss validiert werden, so gut wie möglich auf die form vor der Einreichung.
InformationsquelleAutor schooner | 2009-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Platz
\s*
vor und nach Ihrem Muster, und es sollte ordnungsgemäß funktionieren.dein Vorschlag funktioniert:
\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*
Ich weiß, das ist ziemlich alt, aber ich denke, es ist immer noch sehr relevant heute. Wenn das Ziel ist, um eine regex-nur für raw-Nutzer eingegeben E-Mail dann denke ich, das ist die richtige Antwort. Allerdings, wenn Sie möchten, dass ein regex für eine gültige E-Mail-das ist falsch. Auf große Anwendungen, die Sie wollen, um die Wiederverwendung der gleichen regex in vielen Ebenen, im kleinen apps dies würde gut funktionieren, aber Sie sollten wissen, dass es nicht skaliert.
InformationsquelleAutor localshred
Gruppe, was Sie wollen in einem benannten erfassen und lassen Sie die Leerzeichen vor und nach der Einnahme
Funktioniert nicht mit
<asp:RegularExpressionValidator>
. Verwenden\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*
statt.InformationsquelleAutor Jeff Moser
Tun Sie nur schneiden, bevor Sie übergeben es an die Prüfung.
Warum? Die Räume sind nicht - Teil eine gültige E-Mail -, so dass die regex sollte Sie nicht sehen. Trimmen Sie den Wert mit einem onchange/ "onsubmit" - Aktion.
Ich bevorzuge diese mehr als es zu tun in einer regex. "[email protected]" ist das nicht eine gültige E-Mail. Die zusätzlichen Räume sind im Zusammenhang mit der Quelle der Daten. Wie würden Sie nicht die Validierung einer E-Mail in der DB mit der gleichen E-Mail regex akzeptiert Leerzeichen. Wenn Sie die E-Mail aus einem query-string verwenden Sie nicht eine regex, die können verschlüsselte Zeug, würden Sie entschlüsseln zuerst, dann validieren. Wenn Sie mithilfe von MVC-Prüfer dann sind Sie auf Gedeih und Verderb MS-engineering. So könnten Sie keine Wahl haben.
InformationsquelleAutor Kevin
Im Falle von ASP.NET die folgenden Werke:
Ermöglicht eine Vielzahl von E-Mails wie:
etc
Stellen Sie sicher, Sie Streifen die Leerzeichen in deinem code etwa so:
VB
Dim Email as string = EmailAddress.Text.Trim()
C#
string Email = EmailAddress.Text.Trim();
InformationsquelleAutor Vaibhav Garg
Ging ich auf "Antworten", das als eine einfache Bemerkung, aber die wirkliche Antwort auf Ihre Frage ist, dass es gibt keine Antwort.
Warum?
Weil jede E-Mail-Adresse mit Leerzeichen oder Leerzeichen vor oder nach es, ist ein ungültig E-Mail-Adresse.
Sie versuchen, und übergeben Sie ein E-Mail-Adresse mit whitespace-chars um es in ein SMPTP-Steuerung zum Beispiel, und versuchen Sie es und senden Sie es, wird es scheitern,!
Alle E-Mail-Adressen, die validiert werden müssen aus der Sicht dieser regex...
oder auch dieses
Alles andere ist eine ungültige E-Mail-Adresse.
Wirklich der Weg, um es zu TRIM() den string vor der übergabe in ein E-Mail-Steuerung zu verwenden.
Nur Warnung Sie.
InformationsquelleAutor Fandango68