2009-09-14 65 views

Respuesta

2

hacer una prueba básica Expresión regular para la formateo A continuación, haga ping a la URL con un XMLHttpRequest para asegurarse de que existe. Un ejemplo usando jQuery ...

var url = $("#txtUserWebSite").val(); 
var reg = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)[email protected])?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([,-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 

if(!reg.test(url)) { 
    alert("Invalid URL!"); 
    return false; 
} 

$.get(url, function(dat, stat) { 
    if(stat == "success") 
    alert("Valid URL!"); 
    else 
    alert("Invalid URL!"); 
}) 
10

supongo, que ya sabe cómo obtener el valor de <input> con JavaScript. Entonces su problema es escribir la función específica para validar la URL.

Primero, podríamos considerar comprobando que la dirección URL es sintácticamente correcta.

Algunos ejemplos, que nuestro validador URL debe considerar definitivamente OK:

http://www.example.com. 
http://www.google.ee/search?q=foo&sourceid=opera&ie=utf-8&oe=utf-8 
https://ama-z-on.co.uk/index.html?a=hei%20hoo 
ftp://ftp.linux.ee/public/gentoo/i386/portage-snapshot.tar.bz 
http://he.wikipedia.org/wiki/שטרגליים#.D7.A8.D7.90.D7.95_.D7.92.D7.9D 
sftp://123.1.255.128:80/pub 

Y eso es sólo una pequeña fracción de la variedad real de URL-s posible. Y HTTP y FTP no son los únicos protocolos posibles para URL. Oh hombre, esa validación de URL es realmente difícil.

Pero supongamos que un URL válido debe comenzar con algunas letras, y luego ": //" y después de que lo que nunca. Para probar ese tipo de patrón que utilizaría una expresión regular que en JavaScript se parece a esto:

function validateUrl(url) { 
    return /^[a-z]+:\/\//i.test(url); 
} 

Las expresiones regulares son un gran tema general, que usted debe considerar aprender por sí mismo, sino sólo una breve explicación aquí:

  • / - inicio de la expresión regular
  • ^ - coincide con el comienzo de la cadena de
  • [a-z] - partidos, ya sea a, b, c, ..., x, y, z.
  • + - significa que el patrón anterior se puede repetir una o más veces.
  • : - coincide con el símbolo de dos puntos en sí.
  • \/ - Partidos barra diagonal / (sin la barra invertida JavaScript pensaría que es el fin de la expresión regular).
  • / - finaliza la expresión regular.
  • i - Este es un modificador, que hace que esta expresión regular entre mayúsculas y minúsculas.
  • .test(url) - llama al método test de objeto de expresión regular con url como parámetro. Cuando el parámetro coincide con la expresión regular, devuelve true de lo contrario false.

Adicionalmente es posible que desee para permitir introducir una URL sin la parte http:// - esto significa que realmente necesita para validar el nombre de dominio o la dirección IP o lo que sea que le sigue.

supongo que está muy confundido por ahora, y eso es intencional. Realmente no debe escribir JavaScript para hacer la validación de la URL usted mismo, es muy difícil hacerlo bien.En su lugar, debe usar una función de biblioteca, que muchos expertos prueban y confirman que es correcta.

Tal vez el marco de JavaScript que está utilizando ya tiene una buena herramienta para ese trabajo. En ese caso, úsalo. Lamentablemente, no puedo sugerir ninguna biblioteca específica para la validación de URL específicamente.

Además, es posible que desee considerar haciendo ping a la URL como sugirió Josh Stodola, para comprobar que realmente existe. Aunque, la forma particular que sugiere Josh, podría ser problemático en caso de que el recurso al que hace referencia la URL sea un archivo de 10GB :)

-1

Consulte Regular Expression Library, que tiene un gran repositorio de expresiones regulares para todo tipo de validaciones. También proporcionan una herramienta de prueba en línea.

Cuestiones relacionadas