2011-10-10 23 views
8

मैं जानता हूँ कि मैं एक जावास्क्रिप्ट इस तरह की जगह बना सकते हैं कि:जावास्क्रिप्ट regex बनाने प्रोग्राम के रूप में

str = str.replace(/mytarget/g, 'some value');

कि शाब्दिक mytarget की सभी घटनाओं की जगह लेगा। हालांकि, मेरे पास regex प्रतिस्थापन में उपयोग करने के लिए शब्दों/वाक्यांशों की एक बड़ी श्रृंखला है, और regexps केवल भाषा तत्व हैं (वे घोषणा करते समय स्ट्रिंग में लपेट नहीं हैं), मुझे regexps घोषित करने का कोई तरीका नहीं मिल रहा है प्रोग्रामेटिक रूप से जब तक कि मैं उन्हें हार्ड कोड नहीं करता। तो अगर मेरे पास है:

str = str.replace(/word/g, 'some value');

str = str.replace(/another/g, 'some value');

str = str.replace(/hello/g, 'some value');

एक उदाहरण है कि मैं regexps उपयोग कर सकते हैं पोस्ट करें, मैं के रूप में:

var arr=['word', 'another', 'hello'];

मैं उत्पादन करना चाहते हैं व्हाइटस्पेस इत्यादि जैसे regexps में और अधिक अभिव्यक्ति जोड़ना होगा इसलिए मुझे इसे regexp रास्ता चाहिए। अंत में, कृपया eval का उपयोग न करें, मुझे यकीन है कि एक बेहतर तरीका है।

+0

आप नियमित अभिव्यक्ति क्यों उपयोग कर रहे हैं? बस एक सरल [स्ट्रिंग प्रतिस्थापन] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace) करें। – Quentin

+0

और प्रतिस्थापन पैटर्न बस ऊपर बताए गए कारणों के साथ एक regexp है। –

उत्तर

13

का उपयोग कर \ वर्णों से बचने की आवश्यकता है, इसके लिए आपको RegExp कन्स्ट्रक्टर फ़ंक्शन का आह्वान करने की आवश्यकता है। उदाहरण:

['word', 'another', 'hello'].forEach(function(word) { 
    var myExp = new RegExp(word, 'g'); 
    str = str.replace(myExp, 'some value'); 
}); 

निर्माता के लिए पहला तर्क एक स्ट्रिंग है, जिसका शाब्दिक कुछ भी आप // inbetween लपेट होगा लेता है। दूसरा पैरामीटर भी स्ट्रिंग है, जहां आप g, i तरह संशोधक पारित कर सकते हैं, आदि

0

आप मक्खी पर रेग-exp पैदा कर रहे हैं, तो आप RegExp ऑब्जेक्ट

var a = new RegExp("word") 
3

आप इस तरह गतिशील रूप से एक रेगुलर एक्सप्रेशन से निर्माण कर सकते हैं का उपयोग कर सकते हैं -

var word = 'hello'; 
var re = new RegExp("\\b" + word + "\\b","g"); 

याद रखें कि आप हूँ कि \\

2
for(i in arr) 
{ 
    str = str.replace(new RegExp("\\"+arr[i],"g"), "some value") 
} 
संबंधित मुद्दे