रेगुलर एक्सप्रेशन (Regex) शुरुआती गाइड

रेगुलर एक्सप्रेशन (regex) एक कॉम्पैक्ट पैटर्न है जो स्ट्रिंग के सेट का वर्णन करता है। एक एक्सप्रेशन लॉग में हर ईमेल एड्रेस ढूँढ सकता है, फ़ोन नंबर फ़ील्ड वैलिडेट कर सकता है, URL से ऑर्डर id निकाल सकता है या एक साथ हज़ार फ़ाइलें रीनेम कर सकता है। हर मुख्य लैंग्वेज — JavaScript, Python, Java, Go, C#, PHP — और हर एडिटर व कमांड-लाइन टूल एक ही कोर सिंटैक्स समझता है।

यह गाइड वही कोर सिखाती है: लिटरल कैरेक्टर, कैरेक्टर क्लास, क्वांटिफ़ायर, एंकर, ग्रुप और फ़्लैग — चीट शीट, कॉपी करने लायक पैटर्न, और वे गलतियाँ जिनसे regex बहुत ज़्यादा या बहुत कम मैच करता है।

लिटरल कैरेक्टर और मेटाकैरेक्टर

ज़्यादातर कैरेक्टर खुद से मैच करते हैं: पैटर्न cat "concatenate" के अंदर "cat" से मैच करता है। बारह कैरेक्टर स्पेशल हैं और उन्हें लिटरली मैच करने के लिए बैकस्लैश से एस्केप करना पड़ता है: . ^ $ * + ? ( ) [ ] { } | \ और /। डॉट सबसे ज़्यादा धोखा देता है — a.b "a", फिर कोई भी कैरेक्टर, फिर "b" से मैच करता है, इसलिए "a.b" "aXb" से भी मैच करता है।

colou?r       matches "color" and "colour"
\d{3}-\d{4}   matches 555-1234
\.            matches a literal dot
https?://     matches http:// and https://

आज़माएँ: Regex टेस्टर

कैरेक्टर क्लास

  • [abc] — a, b या c में से एक। [a-z] — कोई भी लोअर-केस अक्षर। [^0-9] — अंक के अलावा कुछ भी।
  • \d — अंक [0-9]। \w — वर्ड कैरेक्टर [A-Za-z0-9_]। \s — व्हाइटस्पेस (स्पेस, टैब, न्यूलाइन)। अपर केस उल्टा करता है: \D, \W, \S।
  • . — न्यूलाइन के अलावा कोई भी कैरेक्टर (जब तक s फ़्लैग सेट न हो)।
  • Unicode — JavaScript में u फ़्लैग इस्तेमाल करें और किसी भी अक्षर के लिए \p{L}, हिंदी के लिए \p{Script=Devanagari}, अरबी के लिए \p{Script=Arabic}। इसके बिना \w सिर्फ़ ASCII मैच करता है।

क्वांटिफ़ायर: कितनी बार

  • * — शून्य या ज़्यादा। + — एक या ज़्यादा। ? — शून्य या एक।
  • {3} — ठीक तीन। {2,5} — दो से पाँच। {2,} — दो या ज़्यादा।
  • क्वांटिफ़ायर लालची (greedy) होते हैं: .* जितना हो सके उतना लेता है। आलसी (lazy) बनाने के लिए ? जोड़ें: .*? पहले मौके पर रुक जाता है। "<a><b>" पर <.+> पूरी स्ट्रिंग मैच करता है; <.+?> "<a>" मैच करता है।

आज़माएँ: Regex एक्सप्लेनर

एंकर, ग्रुप और ऑल्टरनेशन

  • ^ — स्ट्रिंग की शुरुआत (m फ़्लैग के साथ लाइन की)। $ — अंत। \b — वर्ड बाउंड्री, इसलिए \bcat\b "cat" मैच करता है लेकिन "concatenate" नहीं।
  • ( ) — कैप्चरिंग ग्रुप: (\d{4})-(\d{2}) साल और महीना अलग-अलग कैप्चर करता है। (?: ) बिना कैप्चर ग्रुप करता है। (?<year>\d{4}) ग्रुप को नाम देता है।
  • | — ऑल्टरनेशन: jpg|png|gif तीनों में से किसी से मैच करता है। स्कोप सीमित करने के लिए ग्रुप में लपेटें: \.(jpg|png|gif)$।
  • (?=…) और (?!…) — लुकअहेड: सिर्फ़ तब मैच करें जब आगे का हिस्सा मैच करे (या न करे), उसे कंज़्यूम किए बिना। पासवर्ड नियमों में इस्तेमाल: ^(?=.*\d)(?=.*[A-Z]).{12,}$।

फ़्लैग

  • i — केस-इनसेंसिटिव। g — ग्लोबल (सिर्फ़ पहला नहीं, सभी मैच ढूँढें)। m — मल्टीलाइन: ^ और $ लाइन बाउंड्री पर मैच करते हैं।
  • s — डॉटऑल: . न्यूलाइन से भी मैच करता है। u — Unicode मोड। x (कुछ इंजन) — पैटर्न में व्हाइटस्पेस नज़रअंदाज़ और कमेंट की अनुमति।

कॉपी करने लायक पैटर्न

Email (practical):    ^[^\s@]+@[^\s@]+\.[^\s@]{2,}$
Indian mobile:        ^(?:\+91|0)?[6-9]\d{9}$
Saudi mobile:         ^(?:\+966|0)5\d{8}$
ISO date:             ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
UUID:                 ^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
URL (loose):          ^https?://[^\s/$.?#].[^\s]*$
Hex color:            ^#(?:[0-9a-fA-F]{3}){1,2}$
Strong password:      ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{12,}$
Trim whitespace:      ^\s+|\s+$
Extract order id:     /orders/(\d+)

आज़माएँ: Regex टेस्टर आज़माएँ: Regex जनरेटर

वे गलतियाँ जिनसे बहुत ज़्यादा या बहुत कम मैच होता है

  • एंकर भूलना: \d{4} 12345 को "वैलिडेट" कर देता है क्योंकि उसके अंदर 1234 मिल जाता है। ^\d{4}$ इस्तेमाल करें।
  • बिना एस्केप डॉट: example.com "exampleXcom" से मैच करता है। example\.com लिखें।
  • पूरी लाइन में लालची क्वांटिफ़ायर: दो कोटेड स्ट्रिंग वाली लाइन पर "(.*)" दोनों कैप्चर कर लेता है।
  • कैटास्ट्रोफ़िक बैकट्रैकिंग: (a+)+ जैसे नेस्टेड क्वांटिफ़ायर न मैच करने वाले इनपुट पर सेकंडों ले सकते हैं या हैंग हो सकते हैं। क्वांटिफ़ायर सरल रखें और लंबे इनपुट से टेस्ट करें।
  • विशाल पैटर्न से ईमेल वैलिडेट करना: ऊपर का प्रैक्टिकल पैटर्न और एक कन्फ़र्मेशन ईमेल 400-कैरेक्टर regex से बेहतर है जो फिर भी वैध एड्रेस रिजेक्ट करता है।
  • लोकेल की धारणाएँ: Unicode मोड के बिना \w हिंदी या अरबी अक्षरों से मैच नहीं करता।

आज़माएँ: Regex टेस्टर आज़माएँ: Regex एक्सप्लेनर

अक्सर पूछे जाने वाले सवाल

रेगुलर एक्सप्रेशन किस काम आता है?

पैटर्न फ़ॉलो करने वाले टेक्स्ट को ढूँढने, वैलिडेट करने, निकालने और बदलने में: फ़ॉर्म वैलिडेशन, लॉग सर्च, स्ट्रिंग से id निकालना, बल्क रीनेम और एडिटर में सर्च-एंड-रिप्लेस।

regex में \d का क्या मतलब है?

कोई एक अंक, 0–9। \d{3} का मतलब ठीक तीन अंक; \d+ का मतलब एक या ज़्यादा।

regex में * और + में क्या फ़र्क़ है?

* शून्य या ज़्यादा दोहराव मैच करता है (एलिमेंट गैरहाज़िर भी हो सकता है); + कम से कम एक माँगता है।

क्या regex हर लैंग्वेज में एक जैसा है?

कोर सिंटैक्स साझा है, लेकिन डिटेल अलग हैं: लुकबिहाइंड सपोर्ट, नेम्ड ग्रुप, Unicode क्लास और फ़्लैग JavaScript, Python (re), Java, PCRE (PHP) और Go (RE2, जिसमें बैकट्रैकिंग नहीं) में अलग होते हैं।

regex कैसे टेस्ट करें?

पैटर्न और सैंपल टेक्स्ट को ऐसे टेस्टर में पेस्ट करें जो मैच और ग्रुप हाइलाइट करे, फिर ऐसे इनपुट आज़माएँ जिन्हें मैच नहीं करना चाहिए। परफ़ॉर्मेंस समस्याएँ पकड़ने के लिए लंबे और असामान्य इनपुट शामिल करें।

क्या HTML या JSON पार्स करने के लिए regex इस्तेमाल कर सकते हैं?

एक बार के तेज़ एक्सट्रैक्शन के लिए, हाँ। किसी भरोसेमंद चीज़ के लिए, नहीं — नेस्टेड स्ट्रक्चर को असली पार्सर चाहिए। JSON के लिए JSON ट्री व्यूअर या JSONPath इस्तेमाल करें।

इस गाइड में बताए गए टूल्स

रेगुलर एक्सप्रेशन को लाइव टेस्ट करें — मैच हाइलाइटिंग, कैप्चर ग्रुप और रिप्लेस प्रीव्यू के साथ।

यूटिलिटीज़ टूल खोलें

टेस्ट किए हुए पैटर्न की लाइब्रेरी (ईमेल, URL, IP, तारीख़ें, IBAN, सऊदी/जॉर्डन फ़ोन नंबर…) और कस्टम नियमों से रेगुलर एक्सप्रेशन बनाएँ।

यूटिलिटीज़ टूल खोलें

और गाइड

और गाइड →
JSON और डेटा

JSON क्या है?

JSON आसान भाषा में: यह क्या है, छह वैल्यू टाइप, वे सिंटैक्स नियम जिनमें लोग अटकते हैं, इसे फ़ॉर्मेट और वैलिडेट कैसे करें, और XML व YAML से इसकी तुलना।

5 मिनट पढ़ने का समय
API टेस्टिंग

API टेस्टिंग क्या है? REST API कैसे टेस्ट करें

API टेस्टिंग समझें: यह क्या है, हर रिक्वेस्ट और रिस्पॉन्स में क्या जाँचें, REST API टेस्ट करने का स्टेप-बाय-स्टेप तरीका, आम गलतियाँ और मुफ़्त टूल्स।

7 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

टेस्ट केस कैसे लिखें

भरोसेमंद टेस्ट केस कैसे लिखें: हर केस के ज़रूरी फ़ील्ड, कॉपी-रेडी टेम्पलेट, लॉगिन का उदाहरण, और वे तकनीकें जो असली बग पकड़ती हैं।

5 मिनट पढ़ने का समय
सुरक्षा

JWT क्या है? JSON Web Token समझें

JWT आसान भाषा में: JSON Web Token के तीन हिस्से, exp और sub जैसे क्लेम, डिकोड और वेरिफ़ाई कैसे करें, डिकोड करना वेरिफ़ाई क्यों नहीं, और सिक्योरिटी।

5 मिनट पढ़ने का समय
एन्कोडिंग

Base64 क्या है? एन्कोडिंग समझें

Base64 समझें: यह क्या है और क्या नहीं, एन्कोडिंग कैसे काम करती है, आउटपुट एक-तिहाई क्यों बढ़ता है, Base64 बनाम Base64URL, = पैडिंग, और एन्कोड-डिकोड।

4 मिनट पढ़ने का समय
यूटिलिटीज़

UUID क्या है? v4 बनाम v7, UUID बनाम GUID और ULID

UUID समझें: 128-बिट फ़ॉर्मेट, v4 बनाम v7, डेटाबेस key के लिए v7 बेहतर क्यों, UUID बनाम GUID बनाम ULID, कॉलिज़न की संभावना, और जनरेट-वैलिडेट कैसे करें।

5 मिनट पढ़ने का समय