2015-09-01 2 views
1

Я пытаюсь написать регулярное выражение возвращает истину в следующих случаях:Регулярное выражение, соответствующее HTTP в JavaScript

  1. http://anything
  2. http:///anything (Это может иметь любое количество «/»)

Но он должен возвращать ложь в следующих случаях:

  1. HTTP: //
  2. HTTP:/
  3. HTTP:
  4. HTTP
  5. HTT
  6. ХТ
  7. ч
  8. http:/// (Это может иметь любое количество "/")

Я попытался следующее, но в некоторых случаях это терпит неудачу. Может кто-нибудь дать некоторые указатели.

(/^(f|ht)tps?:\/\//i.test(jQuery("base").attr("href") 

ответ

4

Вы можете использовать это регулярное выражение:

^(?:f|ht)tps?:\/{2,}[^\/].* 
  • \/{2,} будет соответствовать 2 или более / в вашем входе.

  • [^\/].* после \/{2,} убедитесь, что вход не заканчивается http:// или https:///.

RegEx Demo

+1

Это не возвращает ложь для HTTP: /// – user2284140

+0

Вы правы. Проверьте мой обновленный ответ и демонстрационную ссылку. – anubhava

+1

Спасибо тонну !!! работает как шарм и спасибо за объяснения лучшего понимания !!! – user2284140

0

var input = document.getElementById("input"); 
 
var output = document.getElementById("output"); 
 

 
var re = new RegExp("http://+[^/\\s][^\\s]*","g"); 
 

 
// To test a single do 
 
// re.test(string) 
 

 
output.innerHTML = input.innerHTML.match(re).join("\n");
#output { 
 
    background-color:#EEF5F9; 
 
    padding:10px; 
 
} 
 
h2 { 
 
    margin:0; 
 
    padding:0; 
 
    font-size:medium; 
 
    font-family:sans-serif; 
 
} 
 
pre { 
 
    margin:0; 
 
    padding:0 10px 0 0; 
 
}
<h2>Inputs</h2> 
 
<pre id="input"> 
 
    http://foo 
 
    http:///bar 
 
    http://foo-bar/baz 
 
    http:// 
 
    http:/ 
 
    http: 
 
    http 
 
    htt 
 
    ht 
 
    h 
 
    http:/// (It can have any number of "/") 
 
</pre> 
 

 
<h2>Matched</h2> 
 
<pre id="output"></pre>

Смежные вопросы