![]() |
Delphi-Version: 5
E-Mail Adresse auf Gültigkeit überprüfen
In meinem Code habe ich uralte RegEx-Tests, um eine E-Mail Adresse auf formale Gültigkeit zu prüfen. Ich habe gesucht, aber nicht gefunden, ob die Delphi 11.3 RTL oder StrUtils oder sonst eine Unit von Delphi mittlerweile da auch was haben.
Danke für Erleuchtung. :- ) |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Ich habe keine vorgefertigte Funktion aus der Delphi-RTL, also strenggenommen keine Antwort auf deine Frage, aber will trotzdem mahnend
![]() Zitat:
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Google Bard behauptet, diese RegEx sei dafür geeignet:
Delphi-Quellcode:
function ValidateEmail(const Email: string): Boolean;
var Regex: TRegEx; begin Regex := TRegEx.Create('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}$'); Result := Regex.Exec(Email); end; Zitat:
Hier ist z.B. eine Liste von E-Mail Adressen, mit denen man testen kann: ![]() |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Ich hab sowas neulich auch gesucht, und bin dann ebenfalls bei den "uralten RegEx" hängen geblieben. Die ist zwar so lang, dass ich die nicht wirklich nachvollziehen kann, scheint aber soweit zu funktionieren.
Delphi-Quellcode:
Hatte bei mir aber auch keine Priorität, da ich die nur als optionalen Parameter für eine online-Abfrage brauche. Per default wird eine hard codierte Adresse genommen, die formal gültig ist, aber nicht existiert. Wenn der User dort was einträgt, was der Dienst dann als ungültig empfindet, kann ich da dann auch nichts dran ändern. :stupid:
REGEX_EMAIL = '^((?>[a-zA-Z\d!#$%&''*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])'
+'[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)' +'(?>\.?[a-zA-Z\d!#$%&''*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])' +'[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]' +'{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d))' +'{4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\' +'[\x01-\x7f])+)\])(?(angle)>)$'; Zitat:
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Delphi-Quellcode:
:mrgreen:
.+@.+\..+
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Ich habe eine recht einfache Frage gestellt. Seids bitte so nett und antwortet darauf + oder beschränkt Euch aufs mitlesen.
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Die Frage ist eben nicht so einfach wie du denkst.
Und die Antwort ist, dass es wahrscheinlich keinen großen Sinn macht zu viel Zeit und Energie da rein zu stecken weil du am Ende ne riesige RegEx hast die dann doch nicht zu 100% klappt und entweder manche gültige Adressen nicht durchlässt oder/und ungültige durchlässt |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
Ich habe bei meiner Suche neulich nichts gefunden, und habe dann irgendwo diesen Monster-RegEx gefunden. Das Ding von Google Bard ist deutlich zu einfach gestrickt, und der erläuternde Text dazu darunter ist schlicht falsch, denke ich. |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
Zitat:
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Dann formuliere ich gern um:
In meinem Code habe ich uralte RegEx-Tests, um eine E-Mail Adresse auf formale Gültigkeit zu prüfen. Ich habe gesucht, aber nicht gefunden, ob die Delphi 11.3 RTL oder StrUtils oder sonst eine Unit von Delphi mittlerweile da auch was haben. Kann mir wer sagen, ob es da etwas gibt? |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Liste der Anhänge anzeigen (Anzahl: 1)
In Embarcaderos Beispielen unter
![]() gibt es auch:
Delphi-Quellcode:
Ich meine, großartig. Da weiß man echt auf den ersten Blick was gemeint ist.
lbType.Caption := 'Email for validation';
MemoRegEx.Lines.Text := '^((?>[a-zA-Z\d!#$%&''*+\-/=?^_`{|}~]+\x20*' + '|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\' + 'x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!' + '#$%&''*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])' + '[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\' + '-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)' + '(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\' + 'd\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|' + '\\[\x01-\x7f])+)\])(?(angle)>)$'; |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Die in meinen Augen einzige wirkliche Lösung wäre, direkt beim Mailserver nachzufragen, ob die Adresse existiert.
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
OK, ist wieder an der Frage vorbei. Kurze Antwort: Nein. |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
Außerdem: - Kein Internet (oder keine Berechtigung) -> Keine Prüfung möglich - Adressen, die noch nicht existieren (z.B. bei Neuanlage), lassen sich so auch nicht prüfen - Server-Ausfall - temporäre Sperre der Adresse oder des Servers - Relaying denied - etc. |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Ich werde wahrscheinlich gleich gesteinigt, aber warum nicht einfach so:
Delphi-Quellcode:
Natürlich wird es damit keine 100%-tige Sicherheit geben, aber in den meisten Fällen sollte das doch eigentlich ausreichen statt mit aufwendigen RegEx-Ausdrücken zu arbeiten.
var IsValidMail : Boolean := System.Masks.MatchesMask('test@mailserver.com', '*@*');
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Es gibt ja diese netten "vollständigen" RegEx, die gefühlrt über zwei UHD-Monitore bei 10 dot
aber am Ende war alles irgendwie sch**, weil ständig einige Sonderfälle fehlten (asiaten, russen, die "neuen" Umlautdomains usw.) |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
Alles was RegEx Dir bieten kann, ist eine filterung aber keine Prüfung auf Gültigkeit. Bei meiner Variante kommt dann noch hinzu wie streng Du das ganze nimmst, ob TempMail server erlaubt sind etc... |
AW: E-Mail Adresse auf Gültigkeit überprüfen
Nja, ein einfaches
Delphi-Quellcode:
geht meistens,
.*[a-z].*@.*[a-z].*[.][a-z]{2,}
ABER auch wenn man erstmal denkt die TLD sind immer zwei oder mehr Buchstaben ... Tja, das war einmal ... seit es bei uns "Sprechendes" wie .sex .porn .store .bank .author .fishing oder .academy gibt, wollten die Anderen das auch und schon hat man den Salat. ![]() .москва (.moscow) .تونس (.tunesia) .ਭਾਰਤ (.india) .グーグル (japanisches .google) .亚马逊 (.amazon auf chinesisch :lol:) .삼성 (.samsung) TLDs werden doch nicht mit Punicode geschrieben? Die "Umlaut"-Domains selber sind in Punicode, also "normale" Buchstaben. Aber Links vom @ wird es dann auch wieder wild. Was mindestens da sein muß, ist das @ und hinten ein Punkt ... außer für Mails im Intranet, z.B. auf Localhost oder einen Gerätenamen.
Delphi-Quellcode:
:D
.+@.+\..+
Und gegen sowas wie a@b.c hilft dann eh nur, wenn man die Adresse tatsächlich validiert, also versucht mit ihr zu reden. :angle: [add] Also, auch die TLD werden als Punycode übertragen, also besteht fast die ganze Mailadrresse eigentlich nur aus Buchstaben und Zahlen und . und - und dem @, aber nun kommt es drauf an, ob du die interne Darstellung speicherst, oder das tatsächlich sichtbare Eingabe, weil da ist fast alles erlaubt. .ਭਾਰਤ = .xn--s9brj9c
Delphi-Quellcode:
aber nur für die interne Darstellung.
.+@.+[.][-a-z0-9]{2,}
|
AW: E-Mail Adresse auf Gültigkeit überprüfen
Zitat:
Meine private Domain jn-games.de wurde aber schon etliche Male wegen des Bindestrichs abgelehnt, weshalb ich eine Ersatzdomain ohne Bindestrich habe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz