Strenge E-Mail-Überprüfung in Excel 2013

4395
Mohammed Abusaif

Ich verwende Excel 2013. Ich baue ein Formular, das der Endbenutzer ausfüllen wird.

Ich habe ein Feld, in das Benutzer ihre E-Mail-Adresse eingeben können, und ich möchte eine gründliche E-Mail-Bestätigung erstellen. Ich suchte Online viel und alles, was ich gefunden habe, ist der Vorschlag für das Vorhandensein von suchen @und .aber, wenn zum Beispiel der Endbenutzer - Typen diese: . @@ com, wird kein Fehler angezeigt werden.

Was ist die richtige Bestätigung?

Hinweis: Ich habe versucht, die UDF und das VBscript, die ich online gefunden habe, zu verwenden, und es funktioniert auch nicht für mich.

0
"und alles, was ich gefunden habe, ist nur die Suche nach (@ ,.)", "Ich habe versucht, die UDF und das VB-Skript zu verwenden" - das sind extrem weit gefasste Beschreibungen, bitte beschreiben Sie, was genau Sie versucht / gefunden haben und warum dies nicht der Fall ist arbeite nicht für dich Máté Juhász vor 8 Jahren 1
@OP: Suchen Sie nach einer reinen Excel-Funktionslösung oder ist VGA erlaubt? Hennes vor 8 Jahren 0

2 Antworten auf die Frage

1
Andi Mohr

Anpassen der Technik von Bill Manville sollte dies für Sie funktionieren. Gehen Sie zur Datenüberprüfung und wählen Sie Benutzerdefiniert . Geben Sie diese Formel ein (vorausgesetzt Ihre E-Mail-Adresse befindet sich in Zelle A2):

=AND(ISERROR(FIND(" ",A2)),LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0),NOT(IFERROR(SEARCH("@",A2),0)=1),NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1),LEFT(A2,1)<>".",RIGHT(A2,1)<>".") 

Hier ist die gleiche Formel, so dass sie lesbar ist:

=AND( ISERROR(FIND(" ",A2)) ,LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1 ,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0) ,NOT(IFERROR(SEARCH("@",A2),0)=1) ,NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1) ,LEFT(A2,1)<>"." ,RIGHT(A2,1)<>"." ) 

Dies prüft, dass:

  1. Es gibt keine Leerzeichen
  2. Nur ein @symbol
  3. Vor dem @Symbol befinden sich einige Zeichen
  4. Mindestens ein .Symbol nach dem @Symbol
  5. Mindestens ein Zeichen zwischen den @folgenden .Symbolen
  6. Die Adresse beginnt oder endet nicht mit .
Wirklich vielen Dank für Ihre Antwort, aber wo ich sie einfügen sollte, habe ich versucht, die benutzerdefinierte Validierung einzugeben, aber es ist zu lang. Mohammed Abusaif vor 8 Jahren 0
Das Datenüberprüfungsfeld scheint nur 255 Zeichen zuzulassen, daher habe ich die Formel etwas reduziert. Versuchen Sie es jetzt. Andi Mohr vor 8 Jahren 0
Ich denke, zwei @ 's sind auch absolut legal. Um die RFC zu zitieren: `Zeichenketten, die andere Zeichen als die in Atomen erlaubten Zeichen enthalten, können in einem Format mit Anführungszeichen dargestellt werden, wobei die Zeichen in Anführungszeichen stehen. "J@ne"@demo.net ist also auch legal. Hennes vor 8 Jahren 1
Sie haben technisch recht, denke ich (normalerweise die beste), aber für jede reale Anwendung sind zwei @s in einer E-Mail-Adresse mit größerer Wahrscheinlichkeit ein Fehler als nicht. Ich kann nicht sagen, dass ich jemals im echten Leben einen getroffen habe. Wenn dies von Belang ist, können Sie dieses Bit einfach aus der Formel entfernen: `, LEN (A2) -LEN (SUBSTITUTE (A2," @ "," ")) = 1". Andi Mohr vor 8 Jahren 0
Ich stimme zu, zwei @ sollten sehr selten sein und wahrscheinlich einen Fehler. Ich kenne jedoch mehrere Personen, die Dinge wie ny.name+ibood@mydomain.tld verwenden. Wenn ich Mail mit der Kopfzeile bekomme, weiß ich, wie ich sie in einen Ordner verschieben kann. Wenn ich Spam an diese Adresse bekomme, weiß ich, wo ich mich beschweren kann. Leider gibt es viele webbasierte Validatoren, die sich auf ein Plus beschränken, anscheinend verwenden einige es als internen Separator und sind schlecht geschrieben. Ich kann es umgehen, indem ich eine andere E-Mail-Adresse verwende. Ich kann jedoch nicht damit umgehen, schlecht geschriebenen Schnittstellen zu vertrauen. Hennes vor 8 Jahren 0
0
Hennes

Das E-Mail-Adressformat ist in RFC 2822 gut definiert .

Grundsätzlich können Sie es wie folgt vereinfachen.

Sie haben zwei Teile: USER @ Domain.

Domäne ist im Dezimalformat gepunktet. ZB mydomain.tld, foo.bar.baz.net usw.

Der Benutzer ist komplexer, er kann entweder eine in Anführungszeichen stehende Zeichenfolge oder ein gepunktetes Format mit Inhalt zwischen den Punkten und einer Option + -Markierung sein.

Beispiel1:
"@pen00tje"@superuser.com
Der Benutzer ist @@penootje. die Domain ist superuser.com. Zwischen dem Benutzernamen und der Domäne befindet sich ein @.

Beispiel 2:
Jane.Smith@Superuser.com

Beispiel 3:
Jane.Smith+tag@Superuser.com
Dies wird mit dem Zustellungsziel versandt, das Jane.Smith@Superuser.comFeld "An:" enthält jedoch Jane.Smith+tag@Superuser.com. Dadurch kann Ihr E-Mail-Client nach Nachrichten filtern.

Ungültiges Beispiel:
Jane..Smith @ Superuser.com (zwei Punkte sind unter dem Benutzernamen nicht zulässig)

Die meisten Webformulare scheinen das falsch zu verstehen. Selbst große Organisationen scheitern, da Dell und Visa versagen, wenn sie auf legale, aber unerwartete E-Mail-Adressen stoßen. Bitte lesen Sie den RFC. Zunächst ist es nicht trivial zu lesen, was geschrieben wird, aber es kommt bereits in einem Format, das perfekt für die Übersetzung in Code (oder Excel-Regeln) ist. und es ist die einzige Quelle der Wahrheit für das, was erlaubt ist.

Das ist sehr interessant, scheint aber nicht die Frage zu beantworten - wie validiert man die E-Mail-Adresse in Excel? (Nebenfrage: Ich weiß, dass Google Mail mehrere Punkte im Nutzernamen zulässt. Ich denke, dies ist eine weitere nicht konforme Implementierung.) Andi Mohr vor 8 Jahren 0
Ja, du hast recht. Ich wurde komplett vom Excel-Teil abgelenkt. Lassen Sie mich ein bisschen mit Excel herumspielen und sehen, ob ich mir etwas einfallen lassen kann. Hennes vor 8 Jahren 1
Pfui. Dies ist schwieriger, als es sich anhört, nur Excel zu verwenden, um das letzte @ zu finden. Ohne VBA (und InStrRev) ist es schwierig, das letzte @ zu finden. Schließt Ich bin gerade jetzt ein `TRIM (RECHTS (SUBSTITUTE (Text," ", REPT (" ", LEN (Text))), LEN (Text))` kombiniert mit einem FIND. Hennes vor 8 Jahren 1