¿Validar la URL con jQuery sin el complemento de validación?

Necesito validar una url en variable con jQuery, pero no puedo usar validate-plugin. ¿Hay una manera simple de hacer esto?

Puede usar la misma expresión regular que el complemento de validación (actualizado a la última expresión regular el 23 de mayo de 2015):

function isUrlValid(url) { return /^(https?|s?ftp):\/\/(((([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url); } var testCases = [ "http://www.google.com/", "https://www.google.com/", "ftp://www.google.com/", "http://google.com/", "http://google.com", "https://google.com", "http://www.google.com:80/", "https://www.google.com:443/", "http://127.0.0.1/", "http://127.0.0.1:9200/", "www.site.com", "x:", "http://", "javascript:alert('xss')", "http://w", "http:", "derp://www.google.com", "http://localserver" ], div = document.getElementById("output"); for(var i=0; i < testCases.length; i++) { var test = testCases[i]; div.innerHTML += (isUrlValid(test) ? "valid: " : "invalid: ") + "" + test + "\n"; } 
 .valid { color: green; } .invalid { color: red; } 
 

Muchas gracias, Meo y Nick. Puse ambas respuestas juntas y funciona muy bien.

 if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[az]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test($("#url").val())){ alert("valid URL"); } else { alert("invalid URL"); } 

Si está seguro de que su audiencia usa HTML5, puede usar type="url" para validar la cadena de texto. También podría crear dinámicamente un elemento de entrada, establecer el tipo y probar si la variable es o no válida.

Lo siguiente se basa en una publicación de blog de https://www.raymondcamden.com/2016/10/19/using-html-form-validation-in-pure-javascript

 var elm; function isValidURL(u){ if(!elm){ elm = document.createElement('input'); elm.setAttribute('type', 'url'); } elm.value = u; return elm.validity.valid; } console.log(isValidURL('http://www.google.com/')); console.log(isValidURL('//google.com')); console.log(isValidURL('google.com')); 

sí con una expresión regular:

 /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[az]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix 
 var url = $('input.surl').val(); url_validate = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; if(!url_validate.test(url)){ alert('error'); } else{ alert('success'); } 

Código:

 var re = /^(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/; re.test('http://www.goole.in'); 

Quieres validar tu URL:

Por favor, pase la URL en esta función, entonces esto le dará verdadero o falso .

Ver Función: