【问题标题】:Checking a URL in an if/else statement?检查 if/else 语句中的 URL?
【发布时间】:2017-02-07 11:25:39
【问题描述】:

我正在尝试检查提交的 URL(不包括任何其他路径)。

用户提交的网址是:

var inputUrl = document.getElementById("inputVal").value;

如果用户提交'http://stackoverflow.com/questions/ask',那么我将尝试创建一个 if/else 语句,该语句将确定该站点是否为“stackoverflow.com”,而不管'http/https''/.../.../' 之后的任何'/.../.../'@

if (inputUrl == "stackoverflow.com") {
console.log ("stackoverflow");
} else {
console.log("not stackoverflow");
}

任何帮助将不胜感激。

【问题讨论】:

  • 问题/问题是?
  • 'http://stackoverflow.com/questions/ask' != 'stackoverflow.com'== 比较整个字符串是否完全匹配,而不仅仅是其中的一部分。
  • 没错。我想我记得学习了一个技巧,您可以使用 * 来替换变量,即 '* stackoverflow.com *',但这似乎不起作用。

标签: javascript url if-statement


【解决方案1】:
   if(inputUrl.toLowerCase().indexOf("stackoverflow.com") > -1) {
       ...
   }

【讨论】:

    【解决方案2】:

    让浏览器为您完成大部分工作的小技巧(可以在MDN 找到):

    var url = document.createElement('a');
    url.href = 'http://stackoverflow.com/questions/ask';
    console.log(url.host);      // stackoverflow.com
    
    
    if (url.host == "stackoverflow.com") {
      console.log ("stackoverflow");
    } else {
      console.log("not stackoverflow");
    }
    

    您也可以通过同样的方式访问 URL 的其他部分,例如协议或哈希。

    【讨论】:

    • 太棒了,谢谢。它有效,但是,似乎有一个小问题。 url.hostwww.stackoverflow.com 而不是 stackoverflow.com 的形式出现。这在某些情况下会导致问题。你知道如何删除www.
    • @Jack 子域是主机的一部分,因为它可以指向一个完全不同的站点。我想那时你将不得不使用字符串操作。
    【解决方案3】:

    $("button").on("click",function(){
    var inputUrl = document.getElementById("inputVal").value;
        inputUrl=inputUrl.split("http://")[1] || inputUrl.split("https://")[1] ;
        inputUrl=inputUrl.split("/")[0];
        if (inputUrl == "stackoverflow.com") {
          console.log ("stackoverflow");
          } else {
          console.log("not stackoverflow");
          }
    
    }) ;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <input id="inputVal" value="http://stackoverflow.com/questions/ask">
    <button>
    submit
    </button>

    jsfiddle 演示:https://jsfiddle.net/geogeorge/h40dvbq6/2/

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2023-02-06
      • 2015-10-28
      • 2017-02-05
      • 1970-01-01
      相关资源
      最近更新 更多