2010-10-22 14 views
8

मैं निम्नलिखित तारएक जावास्क्रिप्ट स्ट्रिंग

http://example.com 
https://example.com 
http://www.example.com 

मैं कैसे http:// या https:// से कैसे छुटकारा पाऊँ है बंद http या https लेने?

+3

यह बिंदु के बगल में हो सकता है, लेकिन यदि आपका इरादा मौजूदा स्थान के समान योजना से लिंक करना है, तो आप केवल '// site.com' कर सकते हैं। –

उत्तर

22

इस के साथ प्रयास करें:

var url = "https://site.com"; 
var urlNoProtocol = url.replace(/^https?\:\/\//i, ""); 
+0

"http" भूल गया – Bick

+7

यह http और https दोनों के साथ काम करता है। "एस" चरित्र वैकल्पिक है। – ncardeli

+0

मुझे वास्तव में यह कोड कितना साफ है पसंद है। मैं नहीं देख सकता कि आपका दूसरा regexp क्यों जरूरी है ... यदि कोई मौजूद है तो पहला http/https प्रोटोकॉल को हटा देता है। यदि यह मौजूद नहीं है तो प्रतिस्थापित करने के लिए कुछ भी नहीं है और स्ट्रिंग को वापस लौटा दिया गया है। – some

4
var txt="https://site.com"; 
txt=/^http(s)?:\/\/(.+)$/i.exec(txt); 
txt=txt[2]; 
पार्स लिंक के लिए

बिना HTTP/HTTPS इस का उपयोग करें:

var txt="https://site.com"; 
txt=/^(http(s)?:\/\/)?(.+)$/i.exec(txt); 
txt=txt[3]; 
+0

बहुत अच्छा काम करता है लेकिन क्या हो सकता है कि स्ट्रिंग हो सकता है या नहीं हो सकता है http: // कुछ साइटमैट के रूप में पहले ही प्रारूप में आते हैं और उन पर – Trace

+0

विफल रहता है यदि कोई "http/https" नहीं है: – Bick

+0

var txt = " https://site.com "; txt =/((http (s)?: \/\ /)? (। +) $/I.exec (txt); txt = txt [3]; – Bick

2
var str = "https://site.com"; 

str = str.substr(str.indexOf(':') + 3); 

के बजाय .substr(), आप भी .slice() या .substring() इस्तेमाल कर सकते हैं। वे सभी इस स्थिति में एक ही परिणाम उत्पन्न करेंगे।

str = str.slice(str.indexOf(':') + 3); 

str = str.substring(str.indexOf(':') + 3); 

संपादित करें: ऐसा लगता है कि प्रश्न की आवश्यकताओं को एक और उत्तर के तहत एक टिप्पणी में बदल दिया है।

अगर वहाँ संभवतः स्ट्रिंग में http:// नहीं है, तो ऐसा करते हैं:

var str = "site.com"; 

var index = str.indexOf('://'); 
if(index > -1) 
    str = str.substr(index + 3); 
+0

मुझे लगता है कि आपको वहां गलत भाषा मिली है।: पी –

+2

मुझे यह एक बहुत ही सरल, और रेगेक्स की आवश्यकता नहीं है। @ जैकोब मुझे पूरी तरह से वैध जावास्क्रिप्ट की तरह दिखता है? –

+0

"site.com" को चालू कर देगा "te.com" हालांकि ... IDX = str.indexOf (':') अगर (IDX> = 0) { str = str.substr (IDX + 3); } –

1

पट्टी किसी URL से प्रोटोकॉल:

var url = "https://site.com"; 
var urlNoProto = url.split('/').slice(2).join('/'); 

किसी प्रोटोकॉल, FTP, http, गोफर, एनएनटीपी, टेलनेट, वैस, फाइल, समृद्ध ... आरएफसी 1738 में निर्दिष्ट उन सभी के अपवाद के साथ उन में अपवाद के साथ (mailto, news)।

0

मान लिया जाये कि कोई दोहरी प्रोटोकॉल के अलावा अन्य स्लैश देखते हैं, तो आप कर सकता है:

var url = "https://example.com"; 
var noProtocol = url.split('//')[1]; 
0

आप HTMLHyperlinkElementUtils डोम की उपयोग कर सकते हैं:

function removeProtocol(url) { 
    const a = document.createElement('a'); 
    a.href = url; 
    // `url` may be relative, but `a.href` will be absolute. 
    return a.href.replace(a.protocol + '//', ''); 
} 

removeProtocol('https://example.com/https://foo'); 
// 'example.com/https://foo' 

removeProtocol('wrong://bad_example/u'); 
// 'bad_example/u' 

HTMLHyperlinkElementUtils on MDN से:

a.hostname, example.com
a.host, example.com:3000
a.pathname, /foo/bar.html
a.search, ? एक = 1 & ख = 2
a.hash, #goo
a.username, a.password, a.port, आदि

0

कृपया ध्यान दें कि असली वेब पी में आयु विरासत प्रोटोकॉल// एक आम प्रथा https://paulirish.com/2010/the-protocol-relative-url है।

तो मैं regexp साथ ही इस मामले का आभास:

/^\/\/|^https?:\/\//

(आप इसे अनुकूलित कर सकते हैं)

0

जावास्क्रिप्ट विभाजन समारोह का प्रयोग भी समाधान dervies। बहुत बढ़िया !!!

var url = "https://example.com"; 

url = url.split("://")[1]; // for https use url..split("://")[0]; 
console.log(url); 
0

आप URL() constructor का उपयोग कर सकते हैं। यह आपके यूआरएल स्ट्रिंग को पार्स करेगा और एक एंट्री w/o प्रोटोकॉल होगा। regexps साथ तो कम सिरदर्द:

let u = new URL('https://www.facebook.com/companypage/'); 
URL { 
    hash: "" 
    host: "www.facebook.com" 
    hostname: "www.facebook.com" 
    href: "https://www.facebook.com/companypage/" 
    origin: "https://www.facebook.com" 
    password: "" 
    pathname: "/companypage/" 
    port: "" 
    protocol: "https:" 
    search: "" 
    searchParams: URLSearchParams {} 
    username: "" 
} 
u.host // www.facebook.com 
u.hostname // www.facebook.com 

हालांकि URL() एक प्रोटोकॉल बाहर चला जाता है, तो यह आपको www भाग के साथ छोड़ देता है। मेरे मामले में मैं उस सबडोमेन भाग से छुटकारा पाना चाहता था, इसलिए इसे .replace() पर भी उपयोग करना पड़ा।

u.host.replace(/^www./, '') // www.facebook.com => facebook.com 
2

इस उत्तर से ऊपर कुछ जवाब, http://, https://, या// जो भी आम है फैली हुई है।

उपर्युक्त उत्तरों के लिए धन्यवाद जिसने मुझे इसका नेतृत्व किया!

const urls = [ "http://example.com", "https://example.com", "//example.com" ] 

// the regex below states: replace `//` or replace `//` and the 'stuff' 
const resolveHostNames = urls.map(url => url.replace(/\/\/|.+\/\//, '')) 

console.log(resolveHostNames); 

यहां एक link to a codepen है।

संबंधित मुद्दे