2012-07-02 11 views
22

He estado buscando una respuesta a esto y todas las respuestas que he encontrado no han estado en JavaScript.Compruebe si una cadena comienza con http utilizando Javascript

Necesito una forma, en javascript, para comprobar si una cadena comienza con http, https o ftp. Si no comienza con uno de esos, debo anteponer la cadena con http://. indexOf no funcionará para mí. No creo que necesite http, https o ftp. Además, no quiero que algo como google.com/?q=http://google.com active eso como válido, ya que no comienza con un http, mientras que indexOf activaría eso como verdadero (si no estoy del todo equivocado).

El expresiones regulares de PHP más cercano que he encontrado es la siguiente:

function addhttp($url) { 
    if (!preg_match("~^(?:f|ht)tps?://~i", $url)) { 
     $url = "http://" . $url; 
    } 
    return $url; 
} 

Source: How to add http if its not exists in the url

Simplemente no sé cómo convertir eso a javascript. Cualquier ayuda sería muy apreciada.

+0

vergonzosamente confusión de JavaScript y Java suprimen – Foon

+0

Eso es Java, no de Java Guión. – tskuzzy

+0

posible duplicado de [Expresión regular para la URL del navegador] (http://stackoverflow.com/questions/2899454/regular-expression-for-browser-url) – Hamish

Respuesta

72
function addhttp(url) { 
    if (!/^(f|ht)tps?:\/\//i.test(url)) { 
     url = "http://" + url; 
    } 
    return url; 
} 
+4

Recomendaría agregar verificación de valor de 'url' para evitar devolver 'http: //' cuando no hay cadena de valor (o vacío) se proporciona: if (url &&!/^ (f | ht) tps?: \/\ // i.test (url)) –

+0

+1 para mayúsculas y minúsculas –

2

Esto debería funcionar:

var re = /^(http|https|ftp)/ 
15

esto debería funcionar:

var pattern = /^((http|https|ftp):\/\/)/; 

if(!pattern.test(url)) { 
    url = "http://" + url; 
} 

jsFiddle

+0

¡Mejor !, muchas gracias. – RobertoAllende

8
var url = "http://something.com" 
if(url.indexOf("http") == 0) { 
    alert("yeah!"); 
} else { 
    alert("No no no!"); 
} 
+1

recorta la url como si tuviera 'SPACE http' de lo que es un problema: P –

Cuestiones relacionadas