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