Ich habe den folgenden regulären Ausdruck, der einem E-Mail-Adressformat entspricht:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
Dies wird zur Validierung mit einem Formular unter Verwendung von JavaScript verwendet. Dies ist jedoch ein optionales Feld. Wie kann ich diesen regulären Ausdruck ändern, um ihn an ein E-Mail-Adressformat oder eine leere Zeichenfolge anzupassen?
Aufgrund meines begrenzten Regex-Wissens denke ich, dass es \b
mit einer leeren Zeichenfolge übereinstimmt und |
"Oder" bedeutet. Deshalb habe ich Folgendes versucht, aber es hat nicht funktioniert:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
Antworten:
pattern
Verwenden Sie zum Abgleichen oder für eine leere ZeichenfolgeErläuterung
^
und$
sind der Anfang und das Ende der Schnuranker.|
wird verwendet, um Alternativen zu bezeichnen, zthis|that
.Verweise
Auf
\b
\b
in den meisten Geschmacksrichtungen ist ein "Wortgrenzen" -Anker. Es handelt sich um eine Übereinstimmung mit der Breite Null, dh um eine leere Zeichenfolge, die jedoch nur an bestimmten Stellen , nämlich an den Grenzen eines Wortes, mit diesen Zeichenfolgen übereinstimmt .Das heißt,
\b
befindet sich:\w
und\W
(in beliebiger Reihenfolge):^
und\w
\w
\w
und$
\w
Verweise
Bei Verwendung von Regex zum Abgleichen von E-Mail-Adressen
Dies ist je nach Spezifikation nicht trivial.
Verwandte Fragen
quelle
Eine Alternative wäre, Ihren regulären Ausdruck in nicht erfassende Klammern zu setzen. Machen Sie diesen Ausdruck dann optional, indem Sie das
?
Qualifikationsmerkmal verwenden, das nach 0 (dh leeren Zeichenfolgen) oder 1 Instanzen der nicht erfassten Gruppe sucht.Zum Beispiel:
In Ihrem Fall würde der reguläre Ausdruck ungefähr so aussehen:
Kein
|
"oder" Operator notwendig!Hier ist die Mozilla-Dokumentation für die JavaScript-Syntax für reguläre Ausdrücke.
quelle
Ich bin nicht sicher, warum Sie eine optionale E-Mail-Adresse überprüfen möchten, aber ich würde vorschlagen, dass Sie diese verwenden
Bedeutung
^$ empty string | or ^ beginning of string [^@\s]+ any character but @ or whitespace @ [^@\s]+ $ end of string
Sie werden gefälschte E-Mails sowieso nicht stoppen und auf diese Weise werden Sie gültige Adressen nicht stoppen.
quelle
\ b entspricht einer Wortgrenze. Ich denke, Sie können ^ $ für leere Zeichenfolge verwenden.
quelle