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




dynamic (3)

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

str.match(regEx);





dynamic