2015-11-04 8 views
6

से अन-ब्रांडेड किए गए URL को कैसे हटाएं संलग्न फ़िल्ड के भीतर कोड <textarea> के भीतर सभी यूआरएल को हटा देता है।<textarea>

क्या यूआरएल सभी यूआरएल को हटाने के लिए कोड के लिए संभव है, सिवाय इसके कि यूआरएल कोष्ठक के अंदर है - उदा। (google.com) - <textarea> गतिशील रूप से?

यदि संभव हो, तो मैं एक अद्यतन पहेली की सराहना करता हूं क्योंकि मैं कोडिंग के लिए नया हूं।

$(function() { 
 
    $("#txtarea").keyup(function() { 
 
    console.log(this.value); 
 
    this.value = this.value.replace(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/mg, ' '); 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<textarea id="txtarea" placeholder="How to stop http being entered into textarea?"></textarea>

Fiddle

+1

आप शायद नियमित अभिव्यक्तियों का उपयोग करना चाहते हैं, लेकिन एक यूआरएल की जांच करना एक कठिन समस्या है (ब्रैकेट हालांकि बहुत आसान होगा)। उम्मीद है कि यह भी एक लगातार समस्या है इसलिए आपको मौजूदा उत्तरों को खोजने में कोई कठिनाई नहीं होनी चाहिए। – Aaron

+0

_ "हालांकि, यूआरएल को एक ब्रैकेट के अंदर रखें जैसे कि (google.com)" _ ब्रैकेट वर्णों के अंदर "" ["', '"] "'? – guest271314

+0

चेक [यह बेवकूफ] (http://jsfiddle.net/95b2msaj/10/)। यहां टेक्स्ट क्षेत्र में '(http://google.com का परीक्षण करें) पेस्ट करें। ध्यान दें कि यदि आप '(', फिर 'http: // google.com' टाइप करते हैं, तो यूआरएल हटा दिया जाएगा क्योंकि यह अभी भी '(...)' के अंदर नहीं है। क्या आप इसे ढूंढ रहे हैं? –

उत्तर

1

संपादित करें: ऊपर के लिए निम्न कोड (स्ट्रिंग एकल यूआरएल युक्त) का उपयोग करें।

$(function(){ 
    var urlmatch = /(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/gm, protomatch = /\((https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?\)/gm; 
    $("#txtarea").keyup(function(){ 
     if(this.value.match(protomatch) && this.value.charAt(0) == '(' && this.value.charAt(this.value.length-1) == ')'){ 
      this.value = this.value; 
     } 
     else if(this.value.match(urlmatch) && !this.value.match(protomatch) && this.value.charAt(0) != '(' && this.value.charAt(this.value.length-1) != ')'){ 
      this.value = this.value.replace(urlmatch, ''); 
     } 
    }) 
}); 

संपादित करें: यह जाँच करें और सब अगले ही यूआरएल (एकाधिक यूआरएल) स्ट्रिंग भर आने वाले निकाल देंगे।

 $(function(){ 
       $("#txtarea").keyup(function(){  
        var urlmatch = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/, newA = [], a = this.value.split(' '); 
       $.each(a, function (i, j) {//j = $.trim(j); 
       if((j.match(urlmatch) && j.charAt(0) == '(' && j.charAt(j.length-1) == ')') != false) { 
       newA.push(j) 
       } 
       console.log(j, '->', j.match(urlmatch) && j.charAt(0) == '(' && j.charAt(j.length-1) == ')' ) }) 

       var o = newA.join(" ") 
       this.value = o; 
       }) 
      }); 

इसके लिए अद्यतन fiddle खोजें। चीयर्स!

+0

जब आप अपने यूआरएल को पैरेंट में टाइप करना शुरू करते हैं: '(http: // google.co' बंद हो जाएगा इससे पहले कि मैं क्लोजिंग पेरेंट टाइप कर सकूं! क्षमा करें, लेकिन यह वैध जवाब नहीं है। – Anonymous0day

+0

मैंने कोड को ठीक करने के लिए संपादित किया है वही। –

+0

एकमात्र समस्या ब्रैकेट उदाहरण है (www.google.com) यूआरएल को हटाकर सही ढंग से काम करता है। हालांकि, ब्रैकेट के बगल में एक और यूआरएल टाइप करते समय, जैसे (www.google.com) www.google। कॉम, ब्रैकेट के अंदर यूआरएल नहीं हटाया जाएगा। क्या ब्रैकेट के अंदर यूआरएल के लिए यह संभव है, हालांकि, यूआरएल सुनिश्चित करने के लिए ब्रैकेट के भीतर नहीं हैं