2009-09-08 19 views

risposta

40

Se non avete bisogno di una regex per fare questo (a seconda di quale lingua si sta utilizzando), si può semplicemente guardare i caratteri iniziali della stringa. Per esempio:

if (!string.StartsWith("http://")) 
    string = "http://" + string; 
//or// 
if (string.Substring(0, 7) != "http://") 
    string = "http://" + string; 
+3

Possano molti, molti moltiplicatori essere conferiti a te. A volte, le regex sono eccessive. –

+1

Grazie per la benedizione. Sì, a volte le potenti funzionalità del linguaggio sono sovrautilizzate. I regex non sono veloci quanto semplici operazioni con le stringhe. –

6

In JavaScript:

if(!(/^http:\/\//.test(url))) 
{ 
    string = "http://" + string; 
} 
8

dovrebbe essere:

/^http:\/\// 

e ricordarsi di utilizzare questo con ! o not (non hai detto che il linguaggio di programmazione), dal momento che siete alla ricerca di oggetti che non corrispondono.

3

Qualcosa del genere dovrebbe funzionare ^(https?://)

+0

È necessario sfuggire al/s. – scragar

0

Se JavaScript è il linguaggio necessario qui, poi guardare this post che aggiunge proprietà "startswith" al tipo di stringa.

2
yourString = yourString.StartWith("http://") ? yourString : "http://" + yourString 

è più sexy

2
var url = "http://abcd"; 
var pattern = /^((http|https|ftp):\/\/)/; 

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

alert(url); 
+1

Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo riguardante * come * e/o * perché * risolve il problema, migliorerebbe il valore a lungo termine della risposta. - [Dalla revisione] (http://stackoverflow.com/review/low-quality-posts/13275385) –

Problemi correlati