2013-06-12 6 views
6

को प्रतिस्थापित करें मैं जावास्क्रिप्ट में एक साधारण टेम्पलेटिंग फ़ंक्शन कोडिंग कर रहा हूं।जावास्क्रिप्ट REGEX सभी से मिलान करें और

मेरे पास मेरा टेम्प्लेट लोडिंग ठीक है, अब वह हिस्सा है जब मुझे प्लेसहोल्डर को सामग्री को पार्स करने की आवश्यकता है।

एक टेम्पलेट का एक उदाहरण है:

{{name}} is {{age}} 

इन कर रहे हैं गतिशील, इसलिए आदर्श मैं उनके नाम, उदा के आधार पर से मेल खाते हैं और प्लेसहोल्डर बदलने के लिए regex का उपयोग करना चाहते हैं

{{name}} को जावास्क्रिप्ट सरणी में लोड की गई सामग्री द्वारा प्रतिस्थापित किया जाना है, उदा।

data.name 

data.age 

यह मेरी regex है: /\{\{(.*?)\}\}/

यह ठीक काम कर रहा है, लेकिन मैं हर regex मैच के माध्यम से पुनरावृत्ति का एक परिभाषित रास्ता नहीं मिल रहा है खोज का एक बहुत बाद।

अग्रिम

+1

[क्या आप इसे बनाने की कोशिश कर रहे हैं?] (Https://github.com/janl/mustache.js) – Marty

+0

समान लेकिन बिल्कुल नहीं। –

उत्तर

17

खैर धन्यवाद, पहले आप regex पर g ध्वज की आवश्यकता होगी। यह सभी मिलान किए गए मानों को प्रतिस्थापित करने के लिए जावास्क्रिप्ट को बताता है। इसके अलावा आप replace विधि पर एक फ़ंक्शन की आपूर्ति कर सकते हैं। कुछ ऐसा:

var result = str.replace(/\{\{(.*?)\}\}/g, function(match, token) { 
    return data[token]; 
}); 

दूसरा पैरामीटर पहले उपसमूह से मेल खाता है और इसी तरह।

+1

+1 ... आपके कोड को एक फ़ंक्शन में लपेट लिया और बहु ​​स्तर की वस्तुओं का मूल्यांकन करने के लिए eval का उपयोग किया ... http://jsfiddle.net/hU7e2/ मनमानी कोड भी चला सकता है। तो सावधान रहें :) http://jsfiddle.net/hU7e2/1/ – Shanimal

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