2015-06-26 10 views
5

मुझे लगता है कि तरह लग रहे लाइनों के बहुत सारे के साथ एक पाठ क्षेत्र के साथ तार लपेट के लिए:Regex HTML टैग

#1=stuff 
#2=more stuff 
... 
#123=even more stuff 
... 

मैं # संख्या = पैटर्न खोजने के लिए रेगुलर एक्सप्रेशन से उपयोग कर रहा हूँ (/^# [0-9] * = /) और मैं उन्हें

<a href='#123='>#123=</a> 

पर यह एंकर टैग बनाना चाहता हूं लेकिन जैसा कि मैंने सोचा था, यह काम नहीं करेगा।

"#2=".replace(/^#[0-9]*=/,"<a href='$1'>$1</a>") 

परिणाम:

<a href='$1'>$1</a> 

क्या मैं गलत कर रहा हूँ?

+0

आप पैटर्न मैच पर कब्जा नहीं कर रहे हैं। '/^(# [0-9] * =) /' –

+0

का उपयोग करें आप किसी भी कैप्चर समूह की घोषणा नहीं कर रहे हैं। –

उत्तर

8

आप या कब्जा समूहों के बारे में भूल $& साथ 0 समूह का उल्लेख करने और क्योंकि आप स्ट्रिंग लंगर की शुरुआत का उपयोग कर रहे आप केवल प्रारंभिक संख्या को संभाल (आप उन सभी मैच के लिए इसे हटाने, या एक बहु उपयोग करने की आवश्यकता

/^#[0-9]*=/m 

$& से बदले: झंडा आप लाइनों) की शुरुआत मिलान करना चाहते हैं। ,

<a href='#1='>#1=</a>stuff 
<a href='#2='>#2=</a>more stuff 
... 
<a href='#123='>#123=</a>even more stuff 

बस ध्यान दें कि प्रतिस्थापन स्ट्रिंग में backreferences केवल जब वहाँ पर कब्जा समूहों सेट कर रहे हैं मूल्यांकन किया जा सकता अन्यथा वे प्रतिस्थापन में शाब्दिक स्ट्रिंग्स माना जाता है:

देखें demo

परिणाम। करने के लिए

+0

चाल थी! बहुत बहुत धन्यवाद। – mottosson

+0

मदद करने के लिए खुशी हुई, एक अच्छा दिन है! –

2
"#2=".replace(/^(#[0-9]*=)/,"<a href='$1'>$1</a>") 

रैप समूह()

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