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
				
			
		
	
	
	
		
			
				
					
						 
					
				
			
			
				
					
						
							 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
40°42'46.1"N 74°00'21.6"W
40°42'36.0"N 74°00'00.0"W
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 SubAl 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 SubEl 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: 
			
		
	
								
								
									
	
		
			
		
	
								
							
							 
				 
 
		 
 
		 
 
		 
			 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		