दिलचस्प पोस्ट
संपत्ति से एंड्रॉइड वेबविव जावास्क्रिप्ट Py2exe के साथ पायथन जीयूआई ऐप की कंसोल विंडो को छिपाना अभिव्यक्ति भाषा में जावास्क्रिप्ट भागो LINQ विस्तार विधियों का क्रम प्रदर्शन को प्रभावित नहीं करता है? क्या फ़ंक्शन पर वैकल्पिक पैरामीटर पास करने का कोई तरीका है? खंड पर रीस्यूम () और ऑन पॉज़ () बैकस्टैक पर नहीं बुलाया गया है पायथन के साथ क्विक्सोर्ट जेडीके और जेआरई के बीच अंतर क्या है? किसी अन्य "पालतू" को मॉडल फ़ॉर्म में जोड़ना अर्रे (लेन) प्रारंभकर्ता में अपरिभाषित मान पासवर्ड सत्यापन के लिए Regexp जावा JQuery के माध्यम से इसे सबमिट किए बिना एक html5 फॉर्म मान्यता को कैसे लागू करें एंड्रॉइड – एसक्यूलाइट डेटाबेस एंड्रॉइड डिवाइस को खींच रहा है मैं एमके एन्नेटेशन दृश्य ड्रॉप कैसे बदलूं? निष्पादन को कैसे रोकें, नींद, आर में एक्स सेकंड की प्रतीक्षा करें?

जावास्क्रिप्ट Regex: कैसे एक नियमित अभिव्यक्ति के अंदर एक चर डाल करने के लिए?

उदाहरण के लिए:

function(input){ var testVar = input; string = ... string.replace(/ReGeX + testVar + ReGeX/, "replacement") } 

लेकिन यह बिल्कुल काम नहीं कर रहा है 🙂 क्या ऐसा करने का कोई तरीका है?

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट Regex: कैसे एक नियमित अभिव्यक्ति के अंदर एक चर डाल करने के लिए?"

 var regex = new RegExp("ReGeX" + testVar + "ReGeX"); ... string.replace(regex, "replacement"); 

अद्यतन करें

कुछ टिप्पणियों के मुताबिक, यह ध्यान देने योग्य है कि यदि आप दुर्भावनापूर्ण सामग्री के लिए संभावित हैं तो आप चर से बच सकते हैं (जैसे चर उपयोगकर्ता इनपुट से आता है)

आप RegExp ऑब्जेक्ट का उपयोग कर सकते हैं:

 var regexstring = "whatever"; var regexp = new RegExp(regexstring, "gi"); var str = "whateverTest"; var str2 = str.replace(regexp, "other"); document.write(str2); 

फिर आप चाहते हैं कि किसी भी तरह से regexstring का निर्माण कर सकते हैं।

आप यहां इसके बारे में अधिक पढ़ सकते हैं।

JavaScript में एक वेरिएबल से एक नियमित अभिव्यक्ति बनाने के लिए, आपको एक स्ट्रिंग पैरामीटर के साथ RegExp कन्स्ट्रक्टर का उपयोग करना होगा।

 function reg(input) { var flags; //could be any combination of 'g', 'i', and 'm' flags = 'g'; return new RegExp('ReGeX' + input + 'ReGeX', flags); } 

बेशक, यह एक बहुत ही सरल उदाहरण है। यह मानता है कि नियमित रूप से अभिव्यक्ति के लिए input ठीक से बच गया है। यदि आप उपयोगकर्ता इनपुट के साथ काम कर रहे हैं, या विशेष वर्णों को मेल करने के लिए इसे अधिक सुविधाजनक बनाना चाहते हैं, तो आपको विशेष वर्णों से बचने की आवश्यकता होगी:

 function regexEscape(str) { return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') } function reg(input) { var flags; //could be any combination of 'g', 'i', and 'm' flags = 'g'; input = regexEscape(input); return new RegExp('ReGeX' + input + 'ReGeX', flags); } 

आप हमेशा स्ट्रिंग के रूप में नियमित अभिव्यक्ति दे सकते हैं, अर्थात "ReGeX" + testVar + "ReGeX" आपको संभवत: आपके स्ट्रिंग के अंदर कुछ अक्षर बचाना होगा (उदाहरण के लिए, दोहरे उद्धरण), लेकिन अधिकांश मामलों के लिए यह समतुल्य है।

आप झंडे को पास करने के लिए RegExp कन्स्ट्रक्टर का उपयोग भी कर सकते हैं ( डॉक्स देखें )।