Foros del Web » Programando para Internet » Javascript »

error al validar una url

Estas en el tema de error al validar una url en el foro de Javascript en Foros del Web. estoy intentando validar una url pero estoy teniendo problemas con firefox, me detiene el script diciendo que es lento este es el codigo. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 12/12/2017, 15:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 10 meses
Puntos: 10
error al validar una url

estoy intentando validar una url pero estoy teniendo problemas con firefox, me detiene el script diciendo que es lento este es el codigo.

Código Javascript:
Ver original
  1. var valor="https://3.bp.blogspot.com/-yu8LsOZbMGs/UyHvnXa6s1I/AAAAAAAAueI/JbXrlmrknW8/s1600/montaña.jpg";
  2. expresion=/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/;
  3. if(expresion.test(valor)){
  4.    //aqui codigo
  5. }

el script se me detiene me sale este error en la consola:
Error: Script terminated by timeout at:
esta es la linea
if(expresion.test(valor)){

que es lo que esta pasando porque esta url me bloquea el navegador?

me dado cuenta que el problema esta en la ñ, pero no se como porque sucede eso en esa expresion, espero que me lo puedan aclarar.
saludos

Última edición por pithon; 12/12/2017 a las 15:52 Razón: añadir informacion
  #2 (permalink)  
Antiguo 12/12/2017, 20:31
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error al validar una url

Prueba con


/^(https?:\/\/)?([\da-z\.ñ-]+)\.([a-z\.ñ]{2,6})([\/\w \?=.-]*)*\/?$/;
  #3 (permalink)  
Antiguo 13/12/2017, 02:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 10 meses
Puntos: 10
Respuesta: error al validar una url

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Prueba con


/^(https?:\/\/)?([\da-z\.ñ-]+)\.([a-z\.ñ]{2,6})([\/\w \?=.-]*)*\/?$/;
Hola lo que pasa que solo se detiene el script si pones la ñ por el final. Igual no pasa solo con la ñ pasa con cualquier caracter acentuado o similares. Nadie sabe porque pasa.
Saludos
  #4 (permalink)  
Antiguo 13/12/2017, 11:43
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: error al validar una url

Intenta con

Código Javascript:
Ver original
  1. var valor="https://3.bp.blogspot.com/-yu8LsOZbMGs/UyHvnXa6s1I/AAAAAAAAueI/JbXrlmrknW8/s1600/montaña.jpg";
  2. expresion=/^(http(s?):\/\/)?.+\.[a-z]{2,6}(\.[a-z]{2,6})?.+\.[a-z]{2,3}$/;
  3. if(expresion.test(valor)){
  4.   alert('paso');
  5. }else{
  6.   alert('no paso');
  7. }
  #5 (permalink)  
Antiguo 14/12/2017, 05:30
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 10 meses
Puntos: 10
Respuesta: error al validar una url

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Intenta con

Código Javascript:
Ver original
  1. var valor="https://3.bp.blogspot.com/-yu8LsOZbMGs/UyHvnXa6s1I/AAAAAAAAueI/JbXrlmrknW8/s1600/montaña.jpg";
  2. expresion=/^(http(s?):\/\/)?.+\.[a-z]{2,6}(\.[a-z]{2,6})?.+\.[a-z]{2,3}$/;
  3. if(expresion.test(valor)){
  4.   alert('paso');
  5. }else{
  6.   alert('no paso');
  7. }
hola gracias por ayudarme, funciona bien pero me gustaria saber que es lo que estaba pasando, tambien me gustaria que me explicaras un poco la expresion que me pusistes es decir no entiendo la logica despues del http/s, creo que se puede poner un punto o mas o ninguna seguido de cualquier cosa bueno si me lo explicas mejor, saludos.
  #6 (permalink)  
Antiguo 14/12/2017, 11:49
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: error al validar una url

Realmente no hay mucho que explicar de la expresion que use,

^(http(s)?:\/\/)? -> checa la existencia de http o https, que volviendo a pensar no tiene lógica checar su existencia o no, si cambias a httm:// seguirá marcándote que es valida la url porque lo pasa a formar parte de la siguiente cadena. así que debería ser solo ^(http(s)?:\/\/) a si validamos que siempre exista uno u otro.

.+ -> el punto(.) dice "cualquier carácter" el más (+) "una o mas ocasiones"
\. -> un punto literal

[a-z]{2,6} -> revisa la extensión 2 a 6 caracteres letras

(\.[a-z]{2,6})? -> en caso de existir una segunda extension para los que usan .com.es o similar

.+ -> repito lo anterior cualquier carácter 1 o mas veces

\.[a-z]{2,3} -> esto considerando que sea un archivo lo que quieres revisar, en cuyo caso debería tener una extensión de 2 a 3 caracteres.

La expresión es bastante burda, quizás puedas requerir algo mas preciso, pero de momento esto funciona.

por otro lado te recomiendo este sitio para construir y testear tus expresiones.
https://regex101.com/

si pones tu expresión ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$ veras que te marca error y te dice un comentario del porque, aparte puedes activar un depurador para que veas como esta trabajando paso a paso y en donde comienzan los problemas.

Etiquetas: url, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.