प्राप्त कराना:
- आप जानते हैं कि आप अपने regexp में क्या करते हैं;
- आपके पास एक पैटर्न बनाने के लिए कई रेगेक्स टुकड़े हैं और वे एक ही ध्वज का उपयोग करेंगे;
- आप अपने छोटे पैटर्न विखंडू को एक सरणी में अलग करने के लिए अधिक पठनीय पाते हैं;
- आप अगले भाग के लिए या बाद में स्वयं के लिए प्रत्येक भाग पर टिप्पणी करने में सक्षम होना चाहते हैं;
- आप नेत्रहीन अपने रेगेक्स को सरल करना पसंद करते हैं, जैसे
/this/gकि new RegExp('this', 'g');
- शुरू से एक टुकड़े में रखने के बजाय एक अतिरिक्त चरण में रेगेक्स को इकट्ठा करना आपके लिए ठीक है;
तो आप इस तरह से लिखना पसंद कर सकते हैं:
var regexParts =
[
/\b(\d+|null)\b/,// Some comments.
/\b(true|false)\b/,
/\b(new|getElementsBy(?:Tag|Class|)Name|arguments|getElementById|if|else|do|null|return|case|default|function|typeof|undefined|instanceof|this|document|window|while|for|switch|in|break|continue|length|var|(?:clear|set)(?:Timeout|Interval))(?=\W)/,
/(\$|jQuery)/,
/many more patterns/
],
regexString = regexParts.map(function(x){return x.source}).join('|'),
regexPattern = new RegExp(regexString, 'g');
फिर आप कुछ ऐसा कर सकते हैं:
string.replace(regexPattern, function()
{
var m = arguments,
Class = '';
switch(true)
{
// Numbers and 'null'.
case (Boolean)(m[1]):
m = m[1];
Class = 'number';
break;
// True or False.
case (Boolean)(m[2]):
m = m[2];
Class = 'bool';
break;
// True or False.
case (Boolean)(m[3]):
m = m[3];
Class = 'keyword';
break;
// $ or 'jQuery'.
case (Boolean)(m[4]):
m = m[4];
Class = 'dollar';
break;
// More cases...
}
return '<span class="' + Class + '">' + m + '</span>';
})
मेरे विशेष मामले में (एक कोड-मिरर-जैसे संपादक), एक बड़े रेगेक्स का प्रदर्शन करना बहुत आसान है, बजाय एक रिप्लेसमेंट की तरह हर बार जब मैं अभिव्यक्ति को लपेटने के लिए एक html टैग के साथ प्रतिस्थापित करता हूं, तो अगला पैटर्न होगा html टैग को प्रभावित किए बिना लक्ष्य करना कठिन हो सकता है (और अच्छे दिखावे के बिना जो दुर्भाग्य से जावास्क्रिप्ट में समर्थित नहीं है):
.replace(/(\b\d+|null\b)/g, '<span class="number">$1</span>')
.replace(/(\btrue|false\b)/g, '<span class="bool">$1</span>')
.replace(/\b(new|getElementsBy(?:Tag|Class|)Name|arguments|getElementById|if|else|do|null|return|case|default|function|typeof|undefined|instanceof|this|document|window|while|for|switch|in|break|continue|var|(?:clear|set)(?:Timeout|Interval))(?=\W)/g, '<span class="keyword">$1</span>')
.replace(/\$/g, '<span class="dollar">$</span>')
.replace(/([\[\](){}.:;,+\-?=])/g, '<span class="ponctuation">$1</span>')
let regexSegment1 = String.raw`\s*hello\s*`