यह किस रेगेक्स प्रकार का उपयोग करता है?+−
JavaScript का बिल्ट-इन रेगेक्स इंजन (जो RegExp और String.prototype.match/replace के पीछे है), क्योंकि यहाँ सब कुछ सर्वर के बजाय आपके ब्राउज़र में क्लाइंट-साइड पर चलता है। यह PCRE के बहुत करीब है लेकिन इसमें कुछ अंतर हैं - उदाहरण के लिए, lookbehind समर्थन इंजन संस्करण पर निर्भर करता है, और नामित समूह (?<नाम>...) सिंटैक्स का उपयोग करते हैं।
मेरा पैटर्न केवल एक बार ही क्यों मेल खाता है?+−
डिफ़ॉल्ट रूप से, g (ग्लोबल) फ़्लैग के बिना, एक रेगेक्स अपने पहले मैच के बाद रुक जाता है - यह दर्शाता है कि JavaScript में RegExp.exec() और String.match() वास्तव में कैसे व्यवहार करते हैं। केवल पहले के बजाय टेस्ट स्ट्रिंग में हर मैच खोजने के लिए ऊपर g फ़्लैग सक्षम करें।
(...) और (?:...) में क्या अंतर है?+−
दोनों पैटर्न के हिस्सों को एक साथ समूहित करते हैं, लेकिन केवल (...) - एक कैप्चर समूह - जो मेल खाया उसे सहेजता है ताकि आप बाद में उसका संदर्भ ले सकें (प्रतिस्थापन में $1, $2, ... के रूप में, या मैच की समूह सूची में)। (?:...) एक गैर-कैप्चर समूह है: यह मैच को सुरक्षित रखे बिना समूहीकरण करता है और मात्रा सूचक लागू करता है, जो तब उपयोगी है जब आपको समूहीकरण चाहिए लेकिन कैप्चर किए गए टेक्स्ट की परवाह नहीं है।
नामित समूह और $<नाम> प्रतिस्थापन कैसे काम करते हैं?+−
केवल संख्या के बजाय किसी नाम के तहत एक समूह को कैप्चर करने के लिए (...) के बजाय (?<नाम>...) लिखें। प्रतिस्थापन मोड में, प्रतिस्थापन टेक्स्ट में इसे $<नाम> के रूप में संदर्भित करें - उदाहरण के लिए, (?<year>\d{4})-(?<month>\d{2}) को $<month>/$<year> से बदलने पर समूह संख्याओं को याद रखे बिना एक तारीख को पुनर्व्यवस्थित किया जा सकता है।
+ बनाम +? जैसे लालची (greedy) और आलसी (lazy) क्वांटिफायर में क्या अंतर है?+−
एक लालची क्वांटिफायर (+, *, {2,4}) जितना संभव हो उतना मैच करता है, फिर पैटर्न के बाकी हिस्से को मैच होने देने के लिए ज़रूरत पड़ने पर ही पीछे हटता है। वही चिन्ह उसके बाद ? के साथ एक आलसी क्वांटिफायर बन जाता है, जो इसके विपरीत जितना कम संभव हो उतना मैच करता है, और ज़रूरत पड़ने पर ही एक बार में एक अक्षर बढ़ाता है। उदाहरण के लिए, <a><b> के मुकाबले <.+> लालचीपन से पूरे <a><b> से मैच करता है, जबकि <.+?> आलस्य से केवल <a> से मैच करता है।
अगर लुकअहेड और लुकबिहाइंड कोई अक्षर उपयोग नहीं करते, तो वे वास्तव में क्या जांचते हैं?+−
वे यह जांचते हैं कि क्या कोई पैटर्न वर्तमान स्थिति से ठीक पहले या बाद में दिखाई देता है, बिना उसे मैच में शामिल किए - इसलिए (?=...) और (?<=...) आगे/पीछे यह जांचते हैं कि कुछ मौजूद होना ही चाहिए, जबकि (?!...) और (?<!...) यह जांचते हैं कि वह मौजूद नहीं होना चाहिए। इसीलिए आप किसी संख्या को केवल तभी मैच करने के लिए \d+(?=px) का उपयोग कर सकते हैं जब उसके बाद 'px' आता हो, जबकि 'px' खुद मैच हुए टेक्स्ट में कभी दिखाई नहीं देता।