Regex टेस्टर
सैंपल टेक्स्ट के खिलाफ एक रेगुलर एक्सप्रेशन टेस्ट करें, टाइप करते ही मैचेज़ लाइव हाइलाइट होते हैं। हर मैच और उसके कैप्चर ग्रुप्स देखें।
फ़्लैग्स रेफ़रेंस
g ग्लोबल (सभी मैच ढूंढता है, यहां हमेशा इंटरनली अप्लाई किया जाता है), i केस-इनसेंसिटिव, m मल्टीलाइन (^ और $ लाइन बाउंड्रीज़ से मैच करते हैं), s dotAll (. न्यूलाइन से मैच करता है), u यूनिकोड, y स्टिकी।
यह कैसे काम करता है
आपका पैटर्न ब्राउज़र के नेटिव RegExp इंजन से कंपाइल होता है, बिल्कुल वही इंजन जो आपका JavaScript कोड प्रोडक्शन में इस्तेमाल करेगा। PCRE-आधारित टूल के बजाय यहां टेस्ट करने का यही मक़सद है: सिंटैक्स जो अलग-अलग फ़्लेवर्स के बीच अलग होता है (lookbehind सपोर्ट, u फ़्लैग के तहत \d सिमेंटिक्स, नेम्ड ग्रुप्स) यहां बिल्कुल वैसे ही बर्ताव करता है जैसे वह Node या ब्राउज़र में करेगा। फ़्लैग्स फ़ील्ड को वैलिड सेट (d g i m s u y) में सैनिटाइज़ किया जाता है, और टेस्टर चुपचाप इंटरनली g जोड़ देता है ताकि वह हर मैच पर चल सके, बिना आपके टाइप किए हुए को बदले।
मैचिंग हर कीस्ट्रोक पर चलती है: टेस्टर एक लूप में exec() कॉल करता है, मैच टेक्स्ट, पोज़िशन, और कैप्चर ग्रुप्स इकट्ठा करते हुए। दो गार्ड्स इसे ईमानदार रखते हैं: ज़ीरो-लेंथ मैचेज़ (जैसे a* जैसे पैटर्न से) को मैनुअल इंडेक्स बंप मिलता है ताकि लूप हमेशा के लिए न घूमे, और इटरेशन 5,000 मैचेज़ पर कैप होता है। हाइलाइटिंग आपकी टेस्ट स्ट्रिंग को एक बार चलाकर और हर मैच किए गए स्पैन को रैप करके बनाई जाती है, सारे टेक्स्ट को पहले HTML-एस्केप्ड किया जाता है ताकि <script> वाला कोई मैच टेक्स्ट के रूप में दिखे, मार्कअप के रूप में नहीं।
सब कुछ आपके टैब में रहता है; टाइप करते समय डेवटूल्स का Network पैनल ज़ीरो रिक्वेस्ट दिखाता है, इसलिए असली डेटा वाली टेस्ट स्ट्रिंग्स कभी आपकी मशीन से बाहर नहीं जातीं।
एक बात जो जानने लायक है: (a+)+$ जैसे नेस्टेड क्वांटिफ़ायर कैटास्ट्रोफ़िक बैकट्रैकिंग ट्रिगर कर सकते हैं, जहां लंबे लगभग-मैचिंग इनपुट पर मैच टाइम एक्सपोनेंशियली फट जाता है। अगर पेज ऐसे किसी पैटर्न पर फ़्रीज़ हो जाए, तो यह टूल की गलती नहीं, regex की है, और यह आपके प्रोडक्शन कोड को भी उसी तरह हैंग कर देगा। पैटर्न को इस तरह फिर से लिखें कि क्वांटिफ़ाइड ग्रुप्स एक ही कैरेक्टर्स को कई तरीक़ों से मैच न कर सकें।