में स्लैश मैं कई आगे की जगह के लिए एक नियमित अभिव्यक्ति की जरूरत है एक भी आगे स्लैश वाला URL में स्लैशRegex के लिए कई आगे मिलान यूआरएल
जैसे पेट के निम्नलिखित को छोड़कर http://link.com//whatever///
बन जाएगा http://link.com/whatever/
में स्लैश मैं कई आगे की जगह के लिए एक नियमित अभिव्यक्ति की जरूरत है एक भी आगे स्लैश वाला URL में स्लैशRegex के लिए कई आगे मिलान यूआरएल
जैसे पेट के निम्नलिखित को छोड़कर http://link.com//whatever///
बन जाएगा http://link.com/whatever/
आप पहले से ही एक जवाब को स्वीकार कर लिया है। कुछ और मिलान और मैचों को नियंत्रित करने का विस्तार दिखाने के लिए, यह भविष्य में आपकी मदद कर सकता है:
var url = 'http://link.com//whatever///';
var set = url.match(/([^:]\/{2,3})/g); // Match (NOT ":") followed by (2 OR 3 "/")
for (var str in set) {
// Modify the data you have
var replace_with = set[str].substr(0, 1) + '/';
// Replace the match
url = url.replace(set[str], replace_with);
}
console.log(url);
विल उत्पादन:
http://link.com/whatever/
दोहरी अपनी स्थिति में कोई फर्क नहीं होगा। आप इस स्ट्रिंग है:
var url = 'http://link.com//om/om/om/om/om///';
आपका set
सरणी कई m//
शामिल होंगे। थोड़ी अनावश्यक, क्योंकि लूप उस चर को कुछ बार देखेगा। अच्छी बात यह है कि String.replace()
कुछ भी नहीं ढूंढता है अगर उसे कुछ भी नहीं मिलता है, इसलिए कोई नुकसान नहीं हुआ।
आप क्या कर सकते हैं पहले डुप्लिकेट को set
से बाहर निकालें, लेकिन लगभग उसी संसाधन की आवश्यकता होगी क्योंकि केवल फॉर-लूप उन पर जा सके।
गुड लक!
मुझे लगता है कि यह काम करना चाहिए: /[^:](\/+)/
या /[^:](\/\/+)/
अगर आप केवल गुणकों चाहते हैं।
यह //
से मेल नहीं खाता है, लेकिन ऐसा लगता है कि आप इसकी तलाश नहीं कर रहे हैं।
प्रतिस्थापित करने के लिए:
"http://test//a/b//d".replace(/([^:]\/)\/+/g, "$1") // --> http://test/a/b/d
result = subject.replace(/(?<!http:)\/*\//g, "/");
या (http, https, FTP और FTPS के लिए)
result = subject.replace(/(?<!(?:ht|f)tps?:)\/*\//g, "/");
मूल प्रश्न ने योजना को बदलने के बारे में कुछ भी नहीं पूछा। यह उत्तर प्रासंगिक नहीं है। – codeadventurer
जब मैं एक एकल फॉरवर्ड स्लैश के साथ मैचों को प्रतिस्थापित करने का प्रयास करता हूं तो वह पहले http: /link.co/whateve/ और दूसरा एक ttp: //link.co/whateve/ देता है। किसी कारण से यह पहले के पिछले चरित्र को हटा देता है। – geochr
ओह, आप उन्हें _replace_ करना चाहते हैं, और सिर्फ _match_ नहीं? यह एक महत्वपूर्ण अंतर है। – Halcyon
@ जेफशेवर नंबर: यह कुछ वर्ण –