German URL validieren in Editfield

so27

Active Member
Licensed User
Longtime User
Hallo zusammen,

ich komm gerade nicht mehr drauf, wie ich den Text in einem Editfield validieren lassen kann. Es soll überprüft werden, ob es sich bei dem Text um eine URL handelt.
 

specci48

Well-Known Member
Licensed User
Longtime User
Was meinst du genau mit wie?
Meinst du den Prüfzeitpunkt bzw. den Prüfaufruf?

Für ein Feld

B4X:
Dim Url As EditText

Kann man bereits während der Texteingabe prüfen:
B4X:
Sub Url_TextChanged(Old As String, New As String)
    If Url.Text = ...
End Sub

Oder z.B. beim Verlassen des Feldes:
B4X:
Sub Url_FocusChanged (HasFocus As Boolean)
    If HasFocus = False Then
        If Url.Text = ...
    End If
End Sub
 

so27

Active Member
Licensed User
Longtime User
Okay, nein ich möchte prüfen, ob der Inhalt in dem Editfield eine URL ist.

In Visual Studio mache ich das so:
B4X:
        Dim pattern As String
        pattern = "http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?"
        If Regex.IsMatch(txtURL.Text, pattern) Then
            Msgbox("Valid URL!","")
        Else
            Msgbox("Invalid URL!","")
        End If

Kann mir einer erklären, warum das in B4A nicht funktioniert. Hier kommt immer Invalid URL.
 
Last edited:

specci48

Well-Known Member
Licensed User
Longtime User
Hast Du vielleicht Text und Pattern vertauscht?
Regex in B4A verlangt als Parameter erst das Pattern, dann den Text:

Regex.jpg


Folgende Zeilen:
B4X:
   Dim pattern As String = "http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?"
    If Regex.IsMatch(pattern, txtURL.Text) = True Then
        Msgbox("Test Url", "Url is valid")
    Else
        Msgbox("Test Url", "Url is invalid")
    End If

funktonieren bei mir soweit.
 

so27

Active Member
Licensed User
Longtime User
Genau das war es. Vertauschte Werte. Danke!!!!
 
Top