मैं आपकी समस्या को हल करने के लिए String.replace() के कार्यात्मक रूप का उपयोग करने के लिए दृढ़ता से प्रोत्साहित करता हूं, बजाय {0}, {1}, इत्यादि के लिए एक लूप में regexp को parametrize करने की कोशिश करने के बजाय।
दूसरे शब्दों में, '{0}' या '{1}' की तलाश करने के बजाय, बस '{([0-9] +)}' (यानी {} के मनमाना संख्या के आसपास 'देखें, और {) के बीच की संख्या के आधार पर इन अभिव्यक्तियों को समझदारी से बदलने के लिए प्रतिस्थापन() फ़ंक्शन को फ़ंक्शन पास करें। इससे आपको RegExp अक्षर का उपयोग करने की सुविधा मिलती है जिसे आप/{([0-9] +)}/। बल्कि तार में भागने पात्रों के साथ चारों ओर गंदगी से
कुछ इस तरह:
s='the song says {0} little {1} little {2} little-endians';
args=['zero','one','two'];
new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch)
{return args[(+firstmatch)]; }
);
जो पैदावार
the song says zero little one little two little-endians
यह similar question देखें।
संपादित करें:
s='the song says {0} little {1} little {2} little-endians,\n'+
' {3} little {4} little {5} little-endians';
args=['zero','one','two'];
new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch)
{var i = +firstmatch; return i < args.length ? args[i] : wholematch;}
);
जो पैदावार
the song says zero little one little two little-endians,
{3} little {4} little {5} little-endians
स्रोत
2009-01-28 15:48:14
@casperOne, डुप्लिकेट क्या है? न तो [यह सवाल] (http://stackoverflow.com/questions/4029109/javascript-regex-how-to-put-a-variable-inside-a-regular-expression) न ही [यह प्रश्न] (http: // stackoverflow.com/questions/494035/how-do-you-pass-a-variable-to-a-regular-expression-javascript) इस प्रश्न के समान थे। यह सवाल महत्वपूर्ण है क्योंकि यह वास्तव में एक स्ट्रिंग वैरिएबल को रेगेक्स पैटर्न में मिलाता है, जबकि अन्य प्रश्नों के उत्तर केवल उदाहरण प्रदान करते हैं जहां पात्रों से बचने का कोई मुद्दा नहीं था। – MandM