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
www.google.com
www.google.com
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
Google Maps
Find local businesses, view maps and get driving directions in Google Maps.
Google Maps
Find local businesses, view maps and get driving directions in Google Maps.
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: