Ho trovato questa che fa il suo dovere:
codice:
function Validate(form) {
var v = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
if (!v.test(form.URL.value)) {
alert("You must supply a valid URL.");
return false;
}
}
Modifica al post:
Correggendo la tua regexp (c'era un '.' di troppo) essa funziona
Comunque, stai attento a 'prendere' il value di un campo della form:
si scrive form.nomecampo.value e non form["nomecampo"].value come hai scritto tu!
Codice corretto con la tua regexp:
codice:
function Validate(form) {
var v = /^(http|https):\/\/[a-z0-9]+([\-|\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/
if (!v.test(form.URL.value)) {
alert("You must supply a valid URL.");
return false;
}
}
Ri-modifica al post:
Ti consiglio, in ogni caso, di utilizzare la prima versione della regexp, che valida qualsiasi url, compresi quelli che hanno anche user e password e quelli che hanno l'host composto da una sola parola.
Infatti, con la tua regexp, sia pure corretta, non viene validato ad esempio http://localhost/ che è un url validissimo!
Spero di aver finito con le modifiche alla risposta ... 
HTH
Zappa