2009-11-08 8 views
25

में एक चर को रीगेक्स में कैसे पास किया जाए क्या jQuery/जावास्क्रिप्ट में एक चर को एक चरबी में पास करने का कोई तरीका है?jQuery/जावास्क्रिप्ट

some_string.match(/#{variable_regex}/)

मिले एक उपयोगी पोस्ट:

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(/variable_regex/); 

रूबी में आप करने में सक्षम हो जाएगा:

मैं की तरह कुछ करना चाहते

How can I concatenate regex literals in JavaScript?

+0

की डुप्लिकेट (https://stackoverflow.com/questions/494035/how- डू-यू-यूज-ए-वेरिएबल-इन-ए-नियमित-अभिव्यक्ति) –

उत्तर

17

यह आसान है::

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(variable_regex); 

बस // खो - रूबी की तरह समझना आप RegExp निर्माता का उपयोग करना होगा। आप जटिल regexes का उपयोग करना चाहते हैं, तो आप स्ट्रिंग संयोजन का उपयोग कर सकते हैं: [? कैसे आप एक नियमित अभिव्यक्ति में एक चर का उपयोग करते हैं]

var variable_regex = "b."; 
var some_string = "foobar"; 

alert (some_string.match("f.*"+variable_regex)); 
+1

मेरे पास एक जटिल रेगेक्स था और मैं एक परिवर्तनीय पैटर्न को एक हार्डकोडेड अभिव्यक्ति में विभाजित करना चाहता था, लेकिन मुझे लगता है कि मैं बस प्रत्येक रेगेक्स क्रमपरिवर्तन को एक पूर्ण चर में सेट कर दूंगा। –

+2

मुझे नहीं लगता कि आप इस संस्करण के साथ रेगेक्स विकल्प लागू कर सकते हैं (उदाहरण के लिए वैश्विक, केस-असंवेदनशील)। मैं कहूंगा कि @ जोनाथन का जवाब इस से अधिक उचित है। – nzifnab

+0

यह भी मैच के साथ काम करता है। अन्य कॉल, जैसे प्रतिस्थापन, को रेगेक्स को स्पष्ट रूप से बनाने की आवश्यकता है। – bronson

44

जावास्क्रिप्ट इंटरपोल का समर्थन नहीं करता है

var aString = "foobar"; 
var pattern = "bar"; 

var matches = aString.match(new RegExp(pattern)); 
+6

इस मामले में कि हम रेगेक्स विकल्प लागू करना चाहते हैं, हम कर सकते हैं: ग्लोबल, केस असंवेदनशील के लिए नया रेगेक्स (पैटर्न, 'जीआई')। – Mike

+0

@ माइक की टिप्पणी को सही करने की आवश्यकता है। यह 'नया RegExp होना चाहिए (पैटर्न [, झंडे]) 'न केवल ** Regex ** –

+1

ES2015 टेम्पलेट तारों में अभिव्यक्ति इंटरपोलेशन का समर्थन करता है। –