在javascript中匹配http的正则表达式

时间:2015-09-01 20:53:03

标签: javascript regex

我正在尝试编写一个正则表达式,以便在以下情况下返回true:

  1. http://anything
  2. http:///anything(可以有任意数量的“/”)
  3. 但是,对于以下情况,它应该返回false:

    1. 的http://
    2. HTTP:/
    3. HTTP:
    4. HTTP
    5. HTT
    6. HT
    7. ħ
    8. http:///(可以有任意数量的“/”)
    9. 我尝试了以下操作,但在某些情况下失败了。任何人都可以给出一些指示。

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

2 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式:

^(?:f|ht)tps?:\/{2,}[^\/].*
  • \/{2,}会在您的输入中匹配2个或更多/

  • [^\/].*之后
  • \/{2,}将确保输入不会以http://https:///结尾。

RegEx Demo

答案 1 :(得分: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>