Foreward
viele Regeln gibt, die eine gültige E-Mail-Adresse beschreiben. Meine vorgeschlagene Lösung ist hier nur die Regeln testen Sie in Ihrer ursprünglichen Frage beschrieben ^[A-Za-z0-9]{5,25}@{1}[A-Za-z]{5,15}[.]{1}[A-Za-z {3,10}$
Ich empfehle die folgenden Änderungen an Ihrer Basis Ausdruck:
^[A-Za-z0-9]{5,25}@{1}[A-Za-z]{5,15}[.]{1}[A-Za-z {3,10}$
2 1 2 1 2 3
- entfernen Sie die
{1}
quantifier, da diese nicht notwendig sind,
- die
A-Z
aus den Charakterklassen entfernen, und die unempfindliche Flagge Fall verwenden
- eine Schließung
]
am letzten cha einfügen racter Klasse
Der resultierende Ausdruck wie folgt aussieht:
^[a-z0-9]{5,25}@[A-Za-z]{5,15}[.][a-z]{3,10}$
Beschreibung
^(?=(?:.*[email protected]*?(?P<TooManyAtSigns>@))?)(?=(?P<NoAtSign>[^@\n]*$)?)(?=(?:[a-z0-9]*?(?P<BadCharacterInUsername>[^[email protected]\n]))?)(?=(?:.*[email protected][a-z.]*?(?P<BadCharacterInDomain>[^a-z.\n]))?)(?=(?:(?:(?P<UsernameTooShort>[a-z0-9.]{0,4})|(?P<UsernameTooLong>[a-z0-9.]{26,}))@)?)(?=(?:.*[email protected](?:(?P<DomainNameTooShort>[A-Za-z]{0,4})|(?P<DomainNameTooLong>[a-z]{16,}))[.])?)(?=(?:.*[email protected](?P<DomainNameMissingDot>[^.\n]*)$)?)(?=(?:.*[email protected]*?[.](?:(?P<TopLevelDomainNameTooShort>[a-z]{0,2})|(?P<TopLevelDomainNameTooLong>[a-z]{11,}))$)?)(?=(?:.*?(?P<FoundASpace>\))?)(?P<email>.*)$
** besser, das Bild zu sehen, einfach rechts auf das Bild klicken und wähle Ansicht in neuem Fenster
** Um das Bild besser zu sehen, einfach mit der rechten klicken Sie auf das Bild und wählen Sie Ansicht in einem neuen Fenster
Dieser reguläre Ausdruck folgendes tun:
- Benutzer ein iteratives Spiel Hass spielen wo sie eine Sache nach der anderen korrigieren, so testet dieser Ausdruck alles im Voraus und sagt dir alles, was falsch ist.
- Führt verschiedene Tests aus. Wenn diese Tests gefunden werden, wird die zugeordnete benannte Erfassungsgruppe aufgefüllt.Wenn die Capture-Gruppe nicht ausgefüllt ist, dann übergeben Sie den Test
- Zu viele
@
Zeichen
- Kein
.
im Domainnamen Abschnitt
- ungültige Zeichen finden. Dieser Test wird nur das erstes vor den
@
gefunden ungültige Zeichen und die ersten ungültigen Zeichen nach dem @
- Benutzername ist zu kurz oder zu lang
- Domain Name zu kurz oder lang ist. z. B.
@gm.com
oder @TheForceIsWithYouAllTheTime.com
Seitennotiz gm.com
ist ein gültiger Domänenname für General Motors.
- Top Level Domain Name ist zu kurz oder zu lang. z. B.
@gmail.au
oder @gmail.WhyIsThisNameSoLong
Seitennotiz .au
ist ein gültiger Name der obersten Ebene.
- Sucht Räume
Beispiel
Live Demo
https://regex101.com/r/cQ0jR6/2
Beispieltext
[email protected]
[email protected]
[email protected]
[email protected]@gmail.com
[email protected]
RoYoMiGmail.com
[email protected]!m
[email protected]
[email protected]
[email protected]
[email protected]@Gma.InterGalatic
[email protected]
Probe Spiele
MATCH 1
email [0-16] `[email protected]`
MATCH 2
UsernameTooShort [17-20] `RoY`
email [17-30] `[email protected]`
MATCH 3
UsernameTooLong [31-62] `RoYoMiInternationalManOfMystery`
email [31-72] `[email protected]`
MATCH 4
TooManyAtSigns [81-82] `@`
BadCharacterInUsername [75-76] `!`
BadCharacterInDomain [81-82] `@`
email [73-91] `[email protected]@gmail.com`
MATCH 5
DomainNameTooShort [99-101] `gm`
email [92-105] `[email protected]`
MATCH 6
NoAtSign [106-121] `RoYoMiGmail.com`
BadCharacterInUsername [117-118] `.`
email [106-121] `RoYoMiGmail.com`
MATCH 7
BadCharacterInDomain [133-134] `!`
DomainNameMissingDot [129-135] `gmco!m`
email [122-135] `[email protected]!m`
MATCH 8
DomainNameTooLong [143-177] `ThisIsNotTheDroidYouWereLookingFor`
email [136-181] `[email protected]`
MATCH 9
TopLevelDomainNameTooShort [195-197] `co`
email [182-197] `[email protected]`
MATCH 10
TopLevelDomainNameTooLong [211-223] `InterGalatic`
email [198-223] `[email protected]`
MATCH 11
TooManyAtSigns [228-229] `@`
BadCharacterInDomain [228-229] `@`
UsernameTooShort [224-227] `RoY`
DomainNameTooShort [229-232] `Gma`
TopLevelDomainNameTooLong [233-245] `InterGalatic`
email [224-245] `[email protected]@Gma.InterGalatic`
MATCH 12
DomainNameTooLong [253-282] `MoreDroidsYouAreNotLookingFor`
email [246-286] `[email protected]`
Welche Art von Nachrichten, die Sie durch die Art und Weise zeigen möchten? –
Regex passt entweder oder nicht ... es gibt keine Grauzone. Sie müssten die E-Mail-Adresse im Code analysieren und über bestimmte Probleme berichten. In Wirklichkeit wird es dem Benutzer wahrscheinlich nicht so viel helfen. –
Ihre Regex zum Testen auf gültige E-Mail-Adressen bietet nicht die volle Palette von Möglichkeiten wie Punkt getrennte Namen, Additionssymbole, mehrere segmentierte Domänennamen. Zum Beispiel: 'Ro.Yo.Me + stackoverflow @ ix.netcom.com' ist vollständig gültig für den Standard, würde aber Ihren Test nicht bestehen. Sie haben auch einen Fehler in Ihrem Ausdruck, die letzte Zeichenklasse fehlt die schließende Klammer. –