[英]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;
}
提示:我不會修改我的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.