आपके ब्राउज़र में regex कैसे काम करता है?
हर JavaScript रनटाइम एक नेटिव रेगुलर एक्सप्रेशन इंजन के साथ आता है — new RegExp(pattern, flags) आपका पैटर्न कंपाइल करता है, फिर String.prototype.match, String.prototype.replace, और RegExp.prototype.exec जैसे मेथड उसे किसी भी इनपुट स्ट्रिंग पर चलाते हैं। यह टेस्टर उस इंजन को एक UI में लपेटता है ताकि आप ब्राउज़र छोड़े बिना पैटर्न को एडिट, रन और इंस्पेक्ट कर सकें। आप जो भी टाइप करते हैं — पैटर्न, फ़्लैग्स, टेस्ट स्ट्रिंग या रिप्लेसमेंट — कुछ भी नेटवर्क पर नहीं भेजा जाता।
regex टेस्टर कैसे काम करता है?
पाइपलाइन कुछ छोटे चरणों की है, और सभी हर कीस्ट्रोक पर क्लाइंट साइड पर चलते हैं (टाइपिंग को सहज रखने के लिए 150 ms का debounce):
- आपके पैटर्न का बॉडी ऊपर के फ़ील्ड से पढ़ा जाता है (शुरू या अंत में कोई
/डेलिमिटर नहीं — वे सजावटी हैं)। चुनी गई फ़्लैग पिल्स कोgiयाgimsuyजैसी फ़्लैग स्ट्रिंग में जोड़ा जाता है। new RegExp(patternBody, flags)पैटर्न कंपाइल करता है। यदि इंजनSyntaxErrorथ्रो करता है (जैसे बिना मिलान वाला कोष्ठक या अमान्य एस्केप), तो संदेश टेस्ट स्ट्रिंग के ऊपर प्रदर्शित होता है और मैच सूची साफ़ हो जाती है। कंपाइल एरर V8 / SpiderMonkey / JavaScriptCore का असलीerr.messageहै, इसलिए वही दिखता है जो आप DevTools में देखेंगे।- मैच सूची के लिए, टेस्टर हमेशा एक सिंथेटिक ग्लोबल फ़्लैग के साथ enumerate करता है — इसलिए भले ही आप
gबंद कर दें, सूची हर मैच दिखाती है। शून्य-चौड़ाई-मैच के विरुद्ध मानक गार्ड (if (m.index === rx.lastIndex) rx.lastIndex++) लूप को उन पैटर्न पर अटकने से रोकता है जो खाली स्ट्रिंग से मैच करते हैं। रिप्लेस मोड आपके वास्तविक फ़्लैग सेट को ध्यान में रखता है ताकि$&String.prototype.replaceकी तरह ही व्यवहार करे। - हर इटरेशन के बीच, टेस्टर
performance.now() - startकी जाँच करता है और 50 ms बीतने पर रद्द कर देता है। यह(a+)+$जैसे इनपुट्स पर लम्बीaश्रृंखला के विरुद्ध कैटैस्ट्रोफिक बैकट्रैकिंग से बचाता है — अन्यथा टैब हैंग हो जाएगा। यह गार्ड बेस्ट-एफ़र्ट है: सिंगल-मैच वाला रोगात्मक पैटर्न अभी भी एकexecकॉल के अंदर समय खा सकता है। यदि ऐसा हो, तो टैब रिफ्रेश करें और पैटर्न को नॉन-ग्रीडी क्वांटिफायर या एटॉमिक-स्टाइल पोज़ेसिव (जैसे[^x]*x) से दोबारा लिखें। - टेस्ट स्ट्रिंग हर मैच की रेंज पर सेगमेंट्स में बँट जाती है और मैच किए गए सेगमेंट
<mark class="rx-match rx-cap-N">एलिमेंट में लिपटे होते हैं, जहाँNछह पैलेट रंगों से चक्र पूरा करता है ताकि आसन्न मैच एक नज़र में अलग दिखें। हर मैच के संख्या वाले ग्रुप (m[1],m[2], …) और नाम वाले ग्रुप (m.groups) नीचे लेबल वाली पंक्तियों के रूप में दिखाए जाते हैं; यदिdफ़्लैग सेट हो, तो प्रति-ग्रुप[start, end]इंडेक्स भी दिखाए जाते हैं।
इस regex टेस्टर का उपयोग क्यों करें?
- गोपनीयता: हर पैटर्न, टेस्ट स्ट्रिंग और रिप्लेसमेंट आपके ब्राउज़र में बिल्ट-इन JavaScript RegExp इंजन से चलता है। कुछ भी टैब से बाहर नहीं जाता — यह तब अहम है जब इनपुट एक कस्टमर लॉग, लीक हुआ क्रेडेंशियल पैटर्न, या ऐसा कुछ हो जिसे आप किसी होस्टेड SaaS regex प्लेग्राउंड में पेस्ट नहीं करेंगे।
- ईमानदार फ़्लेवर: टेस्टर ठीक वही regex इंजन उजागर करता है जिसे Node.js, Chrome, Safari, Firefox और हर ब्राउज़र-आधारित फ़ॉर्म वैलिडेटर चलाता है। कोई Perl-फ़्लेवर अनुवाद परत नहीं जो सूक्ष्म अंतरों को छुपा दे — जो यहाँ काम करता है वही आपके कोड में भी काम करेगा।
- कैप्चर और नाम वाले ग्रुप की डिबगिंग: हर संख्या वाला ग्रुप (
$1,$2, …) और नाम वाला ग्रुप ($<year>) प्रति-मैच दिखाया जाता है, ताकि आप एक पार्सर बना सकें और स्लॉट्स बिना अनुमान के पढ़ सकें। रिप्लेस मोड में आप ग्रुप्स को स्वतंत्र रूप से मिला सकते हैं —$2-$1पहले दो स्लॉट्स को स्वैप करता है,$<name>नाम वाला स्लॉट डालता है, और$&पूरा मैच लौटाता है। - कैटैस्ट्रोफिक-बैकट्रैकिंग गार्ड: enumeration पर 50 ms की सीमा
(a+)+$जैसे रोगात्मक पैटर्न्स को टैब फ़्रीज़ करने से पहले रद्द कर देती है। हैंग ब्राउज़र की जगह आप एक व्याख्यात्मक एरर देखते हैं, और पेज तुरंत ठीक हो जाता है।
regex टेस्टर के सामान्य अनुप्रयोग क्या हैं?
रेगुलर एक्सप्रेशन वेब डेवलपमेंट, सुरक्षा और डेटा कार्य में आते हैं — यह टेस्टर सबसे सामान्य उपयोग के मामलों को लक्षित करता है:
- फ़ॉर्म वैलिडेशन: किसी ईमेल, फ़ोन या पोस्टल कोड पैटर्न का प्रोटोटाइप बनाएँ, टेस्ट स्ट्रिंग में नमूना इनपुट पेस्ट करें, और प्रोडक्शन कोड में पैटर्न शिप करने से पहले पुष्टि करें कि हर पॉज़िटिव केस मैच करता है और हर नेगेटिव केस नहीं करता।
- लॉग स्क्रैपिंग: NGINX, ऐप्लिकेशन या ऑडिट-लॉग आउटपुट का एक हिस्सा पेस्ट करें, अपनी रुचि के भागों के लिए नाम वाले ग्रुप्स के साथ पैटर्न लिखें (
(?<ip>…) (?<path>…)) और हर मैच पर कैप्चर किए गए स्लॉट्स पढ़कर पुष्टि करें कि आपका पार्सर सही है। - रिफ़ैक्टर के लिए सर्च-एंड-रिप्लेस: किसी स्निपेट में पहचानकर्ताओं को फिर से लिखने के लिए रिप्लेस मोड का उपयोग करें —
(\w+)\.set(\w+)\(→$1.$2 =सेटर कॉल्स को प्रॉपर्टी असाइनमेंट में बदल देता है, और लाइव प्रीव्यू कोडमॉड में कमिट करने से पहले परिणाम दिखाता है।
regex उदाहरण कैसा दिखता है?
पैटर्न (\d{4})-(\d{2})-(\d{2}) को g फ़्लैग के साथ टेस्ट स्ट्रिंग release 2025-11-15, prerelease 2026-05-25 पर चलाएँ। इंजन दो मैच पाता है। पहला मैच 2025-11-15 है जिसमें ग्रुप 1 = 2025, ग्रुप 2 = 11, ग्रुप 3 = 15। दूसरा मैच 2026-05-25 है, उसी ग्रुप आकार के साथ। रिप्लेस मोड में, रिप्लेसमेंट टेम्पलेट $3/$2/$1 दोनों तिथियों को 15/11/2025 और 25/05/2026 में फिर से लिखता है — एकल-पैटर्न ISO-से-DMY रूपांतरण जिसे आप किसी स्क्रिप्ट में पैटर्न जोड़ने से पहले दृष्टि से सत्यापित कर सकते हैं।
किसी भी regex कार्य के लिए — पैटर्न बनाने, डिबग करने या फिर से लिखने — के लिए इस टेस्टर को त्वरित रास्ते के रूप में उपयोग करें। सब कुछ स्थानीय रूप से चलता है; कुछ भी लॉग नहीं किया जाता; regex इंजन वही है जो आपके ब्राउज़र के साथ आता है, इसलिए व्यवहार रनटाइम पर प्रोडक्शन कोड जो देखेगा वही होता है।