javascript - चर से जावास्क्रिप्ट Regexp गतिशील पीढ़ी?




dynamic (5)

इस प्रश्न का उत्तर यहां दिया गया है:

एक में दो regex पैटर्न कैसे बनाएँ?

उदाहरण के लिए मेरे पास एक लंबा पैटर्न और एक छोटा सा है, मुझे लंबे समय के सामने छोटे को रखना होगा।

var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');

यह काम नहीं करता है। जब मैं तारों को जोड़ रहा हूं, तो सभी स्लेश चले गए हैं।


Answers

RegExp कन्स्ट्रक्टर एक पैटर्न के साथ मिलान मिलान के लिए एक नियमित अभिव्यक्ति वस्तु बनाता है।

    var pattern1 = ':\\(|:=\\(|:-\\(';
    var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
    var regex = new RegExp(pattern1 + '|' + pattern2, 'gi');
    str.match(regex);

ऊपर कोड मेरे लिए पूरी तरह से काम करता है ...


आपको रेगेक्स शाब्दिक से गुजरना है और ऑब्जेक्ट कन्स्ट्रक्टर का उपयोग करना है, जहां आप रेगेक्स को स्ट्रिंग के रूप में पास कर सकते हैं।

var regex = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regex);

नीचे का प्रयोग करें:

var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');

str.match(regEx);

आपको RegExp का उपयोग करना होगा:

str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));

जब मैं तारों को जोड़ रहा हूं, तो सभी स्लेश चले गए हैं।

यदि आपके पास विशेष रेगेक्स चरित्र से बचने के लिए आपके पैटर्न में बैकस्लैश है, (जैसे \( ), आपको स्ट्रिंग में दो बैकस्लैश का उपयोग करना होगा (क्योंकि \ स्ट्रिंग में एस्केप कैरेक्टर है): new RegExp('\\(') /\(/ रूप में वही होगा।

तो आपके पैटर्न बनना है:

var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';

निम्नलिखित कार्य मेरे लिए काम करता है:

String.prototype.replaceAllOccurence = function(str1, str2, ignore) 
{
    return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
} ;

अब इस तरह के कार्यों को बुलाओ:

"you could be a Project Manager someday, if you work like this.".replaceAllOccurence ("you", "I");

बस इस कोड को अपने ब्राउज़र कंसोल में टेस्ट में कॉपी और पेस्ट करें।





javascript regex dynamic