RegExp erstellen

  • Hallo,

    ich habe das Problem das ich die RegExp nicht hinbekomme:

    Eingabe soll so aussehen:

    Raumnummer: 2.013

    In der ersten Zahl ist erlaubt [1-7] da wir nur 7 Stockwerke haben. Dannach soll der Punkt automatisch gesetzt werden. Dannach soll die erste zahl [0-3] erlaubt sein die anderen Zahlen sollen [0-9] haben.


    Wer kann mir helfen ?


    Gruß SceniX

    Einmal editiert, zuletzt von scenix (16. Juni 2011 um 13:06)

  • ich habe es mit -RegEx von peethebee gemacht und da finde ich nicht den Richtigen weg.


    Spoiler anzeigen


    [autoit]


    #include <GUIConstants.au3>
    #include "RestrictControlRegExp.au3"

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

    Opt("GUIOnEventMode", 1)

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

    _RegEx_RestrictControl_setup (20) ; prepare for up to 20 Controls to restrict

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

    GUICreate("Test")
    GUISetOnEvent(-3, "_quit")
    $inp = GUICtrlCreateInput("", 10, 10, 100, 20)
    _RegEx_RestrictControl_add ($inp, "^[a-z]{0,10}$") ; up to 10 letters
    $inp2 = GUICtrlCreateInput("", 10, 100, 100, 20)
    _RegEx_RestrictControl_add ($inp2, "^[1-7] {1}\.\d[0123] {3}$") ; so wie es nun ist Funktionert es nicht !
    ;~ *[1-7]\.\d{3}
    ;~ /*"^[1234567] {1}\.[0123] {3}$"
    $inp3 = GUICtrlCreateInput("", 10, 200, 100, 20)
    _RegEx_RestrictControl_add ($inp3, "^[a-zA-Z_0-9]{1,20}@[a-zA-Z_0-9]{2,20}\.[a-z]{2,4}$", "g@gm.de") ; e-mail-address

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

    GUISetState()

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

    While 1
    Sleep(10)
    WEnd

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

    Func _quit()
    Exit
    EndFunc ;==>_quit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Wenn man das Ganze in Echtzeit checken will, ist das nicht so einfach.

    Hier eine Teillösung:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGUI = GUICreate("Test", 200, 60)
    $idInput = GUICtrlCreateInput("", 10, 10, 100, 20)
    $idButton = GUICtrlCreateButton("Exit", 150, 10, 40, 40)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE, $idButton
    GUIDelete($hGUI)
    Exit
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $i
    Switch BitAND($wParam, 0x0000FFFF)
    Case $idInput
    $i = GUICtrlRead($idInput)
    $ii = StringRegExpReplace($i, "[^0-9.]", "")
    If StringLen($ii) < 5 Then
    If Not StringRegExp($ii, "[1-7][0-3]\d{2}", 3) Then
    GUICtrlSetData($idInput, StringLeft($ii, 1) & "." & StringMid($ii, 2))
    GUICtrlSetState($idButton, $GUI_ENABLE)
    Else
    GUICtrlSetData($idInput, $ii)
    EndIf
    Else
    GUICtrlSetData($idInput, StringLeft($ii, 5))
    EndIf
    EndSwitch
    Return "GUI_RUNDEFMSG"
    EndFunc

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯