2013-04-22 8 views
15

के साथ प्रतिस्थापित करें मान लें कि मैं jQuery का उपयोग कर <textarea> के मान को पुनर्प्राप्त करता हूं। फिर मैं जावास्क्रिप्ट/jQuery का उपयोग कर मूल्य के एक हिस्से को कैसे बदल सकता हूं। उदाहरण के लिए:जावास्क्रिप्ट/jQuery स्ट्रिंग Regex

स्ट्रिंग: "Hey I'm $$zach$$"

<i>Zach</i>

के साथ बदलें $$zach$$ और फिर भी स्ट्रिंग के बाकी को बनाए रखने?

+0

मुझे लगता है कि आप का उपयोग किया है '' < आदि अपने उदाहरण में। क्या आप '<' या '<' का उपयोग करना चाहते हैं? – timss

उत्तर

31

की जगह एक regex का उपयोग करें। $1 समूह को संदर्भित करता है कि रेगेक्स ने कब्जा कर लिया है।

+0

के लिए कोई लिंक नहीं है उदाहरण के लिए, यदि मैं "$$ hi हर कोई $$" प्रतिस्थापित किया जाए? – Zach

+0

@ user2059479 ठीक है, तय – Doorknob

+0

'g' के बाद 'g' को न भूलें। यह काम करता है जब मैंने केवल यह पत्र जोड़ा। –

3

स्ट्रिंग .replace विधि का उपयोग करना होगा। regex के

yourTextArea.value = yourTextArea.value.replace(/\$\$(.+?)\$\$/, '<i>$1</i>') 

स्पष्टीकरण::

\$\$ two dollar signs 
( start a group to capture 
.  a character 
+  one or more 
?  lazy capturing 
)  end the group 
\$\$ two more dollar signs 

कैप्चर समूह तो स्ट्रिंग '<i>$1</i>' में प्रयोग किया जाता है

.replace(/\$\$(.*?)\$\$/g, '<I>$1</I>') 
+2

-1 jQuery रीगेक्स संदर्भ –

8

उपयोग करें:

str.replace(/\${2}(.*?)\${2}/g, "<I>$1</I>"); 
\${2} matches two $ characters 
(.*?) matches your string to be wrapped 
\${2} same as above 
/g matches globally 

jsFiddle

यदि आप jQuery में कुछ करना चाहता था:

$("#txt").val().replace(/\${2}(.*?)\${2}/g, "<I>$1</I>"); 

मार्कअप:

<textarea id="txt">I'm $$Zach$$</textarea> 

jsFiddle

सबसे अच्छा उपयोग के लिए एक समारोह में लपेट:

var italics = function (str) { 
    return str.replace(/\$\$(.*?)\$\$/g, "<I>$1</I>"); 
} 

italics($("#txt").val()); 

लगता है जैसे आप एक वाक्य रचना Markdown के समान बनाना चाहते हैं। पहिया को पुनर्निर्मित करने के बजाय अपने खेतों के लिए केवल मार्कडाउन पार्सर का उपयोग क्यों न करें?

Showdown JS सक्रिय रूप से विकसित किया गया है और आपको किसी अन्य मार्कडाउन सिंटैक्स के साथ ही मार्कडाउन सिंटैक्स मिलता है। इस के लिए, परिवर्तन लिंक और विस्तारित linkify समारोह के लिए टैग

2

उपयोग:

String.prototype.linkify = function() { 
    var wikipediaPattern = /<wikipedia>(.+?)<\/wikipedia>/g; 
    return this.replace(wikipediaPattern, '<a href="http://fr.wikipedia.org/wiki/$1">$1</a>'); 
} 
संबंधित मुद्दे