Gültigkeit von Inputboxeingabe checken

  • Hi

    Wie kann ich checken, ob die Eingabe in eine Inputbox, der Syntax den ich will, stimmt?

    Input1 darf zb.

    • Nicht leer sein
    • Einer gültigen Email entsprechen

    Wie macht man das?


    LG Max

  • Auslesen und überprüfen ob es <> "" ist und für EMails gibts einen guten RegEx, musst du dir mal anschauen.

    [autoit]

    StringRegExp()

    [/autoit]

    hab ihn leider grad nicht im Kopf, les dir mal das Tut von BugFix durch.

  • Überprüfen ob es eine E-Mail ist:

    [autoit]

    If StringInStr($sString,"@") >0 then
    MsgBox(0,"","Es ist eine E-Mail")
    EndIf

    [/autoit]
  • Danke!

    EDIT: Ich steh grad aufm Schlauch... Wie frage ich ab, ob $input1 leer ist? Mir wills grad echt nicht einfallen...

    Einmal editiert, zuletzt von iFreak95 (18. November 2011 um 23:29)

  • [autoit]

    If GuiCtrlRead ($nInput) <> "" ;; Wenn nicht leer
    If GuiCtrlRead ($nInput) = "" ;; Wenn leer

    [/autoit]
  • Hier ein Beispiel mit StringRegEx

    [autoit]


    $emailinput = InputBox("Emailadresse eigeben","Adresse:","admin@znil.de")

    [/autoit][autoit][/autoit][autoit]

    ;$emailgeprueft enthält 1 wenn eine Emailadresse gefunden wurde,
    ; Alternativ mal die anderen StringRegExp Parameter in der Hilfe ansehen - der kann auch ein Array mit den Adressen zurück geben etc.
    $emailgeprueft = StringRegExp($emailinput,"(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    If $emailgeprueft = 1 Then
    MsgBox(0,"Erfolgreich",$emailinput & " ist eine gültige Adresse")
    Else
    MsgBox(16,"Fehler",$emailinput & " ist keine Emailadresse")
    EndIf

    [/autoit]
  • Noch mal geändert:

    RegEx verkürzt und - gemäß meines eigenen Mantras - mit Kommentaren versehen:

    Spoiler anzeigen
    [autoit]


    $emailinput = InputBox("Emailadresse eigeben","Adresse:","admin@znil.de")

    [/autoit] [autoit][/autoit] [autoit]

    ;$emailgeprueft enthält 1 wenn eine Emailadresse gefunden wurde,
    ; Alternativ mal die anderen StringRegExp Parameter in der Hilfe ansehen - der kann auch ein Array mit den Adressen zurück geben etc.
    $emailgeprueft = StringRegExp($emailinput,"(?i)[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}")
    ; (?i) = Groß/Kleinschreibung ignorieren
    ;[A-Z0-9._%+-]+ = Finde etwas das die folgenden Zeichen enthält ...
    ; [A-Z = Buchstaben und / oder
    ; 0-9 = Zahlen und / oder
    ; ._% = Punkt, Unterstrich und / oder %
    ; +-] = Plus und/oder Minus
    ; + = (Hinter dem ]) in beliebiger Anzahl / Länge
    ; @ = auf jeden Fall ein @
    ;[A-Z0-9.-]+ = Wie zuvor, jedoch kein _ oder % (nicht erlaubt im Domänenteil
    ;\. = Auf jeden Fall mindestens einen Punkt
    ;[A-Z]{2,6} = Buchstaben, mindestens 2, maximal 6 = Domänenendung wie .com oder .de
    ; für die neuen Endungen wie .hamburg etc. müsste man den Wert erhöhen
    If $emailgeprueft = 1 Then
    MsgBox(0,"Erfolgreich",$emailinput & " ist eine gültige Adresse")
    Else
    MsgBox(16,"Fehler",$emailinput & " ist keine Emailadresse")
    EndIf

    [/autoit]