2009-05-09 11 views
9

उदाहरण के लिए:जावास्क्रिप्ट में किसी शब्द की अंतिम घटना को कैसे प्रतिस्थापित करें?

var str="<br>hi<br>hi"; 

को बदलने के लिए पिछले (दूसरा) <br>,

"<br>hihi"

में मैंने कोशिश को बदलने के लिए:

str.replace(/<br>(.*?)$/,\1); 

लेकिन यह गलत है। सही संस्करण क्या है?

उत्तर

3

मुझे लगता है कि आप इस हैं:

str.replace(/^(.*)<br>(.*?)$/, '$1$2') 

इस लालच से शुरू से ही सब कुछ एक <br>, तो एक <br> करने के लिए, से मेल खाने वाली ungreedily अंत करने के लिए सब कुछ मेल खाता है।

+1

आप इसे होना चाहते हैं Wouldnt: str.replace (/^(। *) ((
) *?) $ /, '$ 1 $ 2') ताकि अंतिम मैच में
शामिल किया जा सके? –

+0

संपूर्ण विचार अंतिम
Greg

13

आप तथ्य यह है कि परिमाणकों लालची हैं का उपयोग कर सकते हैं:

str.replace(/(.*)<br>/, "$1"); 

लेकिन नुकसान यह है कि यह उलटे पांव लौटने का कारण होगा है।

एक अन्य समाधान स्ट्रिंग को विभाजित करने, पिछले दो तत्वों को एक साथ रखा और फिर शामिल होने के कुछ हिस्सों होगा:

var parts = str.split("<br>"); 
if (parts.length > 1) { 
    parts[parts.length - 2] += parts.pop(); 
} 
str = parts.join("<br>"); 
+0

'str.replace (/ ([\ s \ S] *)
/," $ 1 ") को हटाने के लिए है; 'multiline के लिए। – hlcs

0
String.prototype.replaceLast = function(what, replacement) { 
    return this.replace(new RegExp('^(.*)' + what + '(.*?)$'), '$1' + replacement + '$2'); 
} 

str = str.replaceLast(what, replacement); 
+0

कोई जवाब केवल कोड या बिना किसी स्पष्टीकरण के कोड को शामिल करता है, जिससे भविष्य के आगंतुकों के लिए यह समझना मुश्किल हो जाता है कि पूछताछ करने वाले से संपर्क करना चाहिए और आपका उत्तर व्यवहार्य क्यों है। कृपया अपने कोड में स्पष्टीकरण जोड़ें। – Xufox

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

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