簡體   English   中英

Javascript檢查網址,以及網址是否包含字符串

[英]Javascript check Url and if the Url contains a string

我具有此功能,用於檢查輸入的網址是否有效。 問題是我還需要知道該網址是否來自facebook.com。 如果不是,則不應將Url視為有效。 我如何編輯下面的函數以使其期望在其中包含facebook.com字符串的Url?

function isUrl(s) {

var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}

不要僅僅測試facebook.com是否在字符串中,因為它可以在字符串中的幾乎任何位置(例如查詢字符串)。

這應該匹配任何facebook.com域(以及子域,如mail.facebook.com )。 我也對其進行了一些修改,以使其更加精確..(雖然不完美,但是您應該從此處進行管理)。

var regexp = /(ftp|http|https)(:\/\/)(www\.)?([a-zA-Z0-9]+\.)*(facebook\.com)(:[0-9]+)?(\/[a-zA-Z0-9]*)?/ ;

這樣的事情使用String#indexOf()不太復雜:

function isUrl(s) {

    if((s.indexOf("facebook.com")!=-1) || (s.indexOf('?facebook.com=') != -1) || 
         (s.indexOf('&facebook.com=') != -1))
   {
        var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-     \/]))?/
        return regexp.test(s);
   }
   else
     return false;
    }

將您的退貨單更改為:

return s.indexOf("facebook.com") > -1 && regexp.test(s);
function isUrl(s) {

  var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
  return regexp.test(s) && s.indexOf('facebook.com') > -1;
}

參見String#indexOf

提示:我不會修改我的isUrl方法,因為如果您需要此函數用於另一個URL,那么它也可以用於除Facebook之外的任何其他內容。 我將其分解為以下代碼:

function isUrl(s) {
  var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
  return regexp.test(s);
}

function isFacebookUrl(s) {
  return isUrl(s) && s.indexOf('facebook.com') > -1;
}

您可以修改正則表達式...。或者可能是一種快速且骯臟的解決方案...在使用正則表達式之前,請檢查URL是否以http://facebook.com開頭。 當然,您也希望涵蓋https。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM