Hola a todos
Los regex nunca los he entendido completamente. Esta tarde he leído bastante sobre ellos y he visto varios videos pero ninguno me funciona.
Estoy tratando de crear una función que me retorne True o False si el dato recibido es valido para ser procesado.
Este es el datos con los que debería dar True son
https://www.google.com/maps?q=4.703274,-74.130271
En otras palabras la primera parte siempre es "https://www.google.com/maps?q=" y a continuación deben haber dos números decimales separados por una ',' que pueden tener una cantidad variable de decimales
Cree 2 regex pero ninguno funciona :
"^https:\/\/www\.google\.com\/maps\?q=-?\d+\.\d+,-?\d+\.\d+$"
"^(http(s)?://)?maps.google.com/maps\?q=([-+]?\d{1,2}\.\d+),([-+]?\d{1,3}\.\d+)$"
Escribí esta función para probarlos:
Al probar la función con esta otra, siempre da False.
El los primeros 2 test debería dar True
Trate de hacer otra función validar los datos cuando llegan en un formato como este "4.703274,-74.130271" con el siguiente regex ^[-]?\d+(\.\d+)?,[-]?\d+(\.\d+)?$ y este otro regex (-?\d+\.\d+),(-?\d+\.\d+) pero tampoco me funciona
con este otro formato...
https://www.google.com/maps/place/4°42'11.8"N+74°07'49.0"W/@4.703274,-74.1328459,17z/data=!3m1!4b1!4m4!3m3!8m2!3d4.703274!4d-74.130271?entry=ttu
...ni lo intente, porque se que no lo lograré.
En el caso del ultimo, debe comenzar por https://www.google.com/maps/place/ y contener 2 decimales separados por ',' los decimales están precedidos por '@'
Los regex nunca los he entendido completamente. Esta tarde he leído bastante sobre ellos y he visto varios videos pero ninguno me funciona.
Estoy tratando de crear una función que me retorne True o False si el dato recibido es valido para ser procesado.
Este es el datos con los que debería dar True son
https://www.google.com/maps?q=4.703274,-74.130271
En otras palabras la primera parte siempre es "https://www.google.com/maps?q=" y a continuación deben haber dos números decimales separados por una ',' que pueden tener una cantidad variable de decimales
Cree 2 regex pero ninguno funciona :
"^https:\/\/www\.google\.com\/maps\?q=-?\d+\.\d+,-?\d+\.\d+$"
"^(http(s)?://)?maps.google.com/maps\?q=([-+]?\d{1,2}\.\d+),([-+]?\d{1,3}\.\d+)$"
Escribí esta función para probarlos:
B4X:
Sub CheckIfGoogleMapsUrl(url As String, pattern As String) As Boolean
Dim isMatch As Boolean = Regex.IsMatch(url, pattern)
Return isMatch
End Sub
Al probar la función con esta otra, siempre da False.
B4X:
Sub TestCheckURL
Dim url1 As String = "https://www.google.com/maps?q=4.703274,-74.130271"
Dim url2 As String = "https://www.google.com/maps?q=40.7128,-74.0060"
Dim url3 As String = "https://www.example.com"
Dim pattern As String
pattern = "^https:\/\/www\.google\.com\/maps\?q=-?\d+\.\d+,-?\d+\.\d+$"
Log("URL 1 Match: " & CheckIfGoogleMapsUrl(url1, pattern))
Log("URL 2 Match: " & CheckIfGoogleMapsUrl(url2, pattern))
Log("URL 3 Match: " & CheckIfGoogleMapsUrl(url3, pattern))
End Sub
El los primeros 2 test debería dar True
Trate de hacer otra función validar los datos cuando llegan en un formato como este "4.703274,-74.130271" con el siguiente regex ^[-]?\d+(\.\d+)?,[-]?\d+(\.\d+)?$ y este otro regex (-?\d+\.\d+),(-?\d+\.\d+) pero tampoco me funciona
con este otro formato...
https://www.google.com/maps/place/4°42'11.8"N+74°07'49.0"W/@4.703274,-74.1328459,17z/data=!3m1!4b1!4m4!3m3!8m2!3d4.703274!4d-74.130271?entry=ttu
...ni lo intente, porque se que no lo lograré.
En el caso del ultimo, debe comenzar por https://www.google.com/maps/place/ y contener 2 decimales separados por ',' los decimales están precedidos por '@'
Last edited: