Regex Tester

किसी स्ट्रिंग के विरुद्ध रेगुलर एक्सप्रेशन का परीक्षण करें और सभी मिलान हाइलाइट देखें

उदाहरण देखें

पैटर्न

//g

टेस्ट स्ट्रिंग

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है

रेगुलर एक्सप्रेशन क्या है?

रेगुलर एक्सप्रेशन (regex या regexp) वर्णों का एक ऐसा अनुक्रम है जो किसी खोज पैटर्न को परिभाषित करता है। Regex परीक्षक आपको एक पैटर्न लिखने, उसे नमूना पाठ पर चलाने और सभी मिलान वास्तविक समय में हाइलाइट करके देखने की सुविधा देते हैं। यह अवधारणा 1950 के दशक में गणितज्ञ Stephen Kleene के नियमित भाषाओं पर किए गए कार्य से उत्पन्न हुई, और Ken Thompson ने 1968 में QED पाठ संपादक में पहला regex इंजन निर्मित किया।

एक regex इंजन किसी पैटर्न को बाएँ से दाएँ पढ़ता है और मिलान का प्रयास करते हुए इनपुट वर्णों को उपभोग करता है। जब आंशिक मिलान विफल होता है, तो इंजन बैकट्रैकिंग का उपयोग करता है: वह पीछे जाता है और पैटर्न में वैकल्पिक पथ आज़माता है। कुछ इंजन (जैसे Go में उपयोग होने वाला RE2) पैटर्न को नियतात्मक परिमित ऑटोमेटन (DFA) में रूपांतरित करके बैकट्रैकिंग से पूरी तरह बचते हैं, जो रैखिक-समय मिलान की गारंटी देता है — हालाँकि इसके बदले में back-references जैसी सुविधाएँ उपलब्ध नहीं होतीं।

Regex सिंटैक्स शिथिल रूप से मानकीकृत है। PCRE (Perl Compatible Regular Expressions) सबसे सामान्य प्रकार है, जो PHP, Python के re मॉड्यूल, और JavaScript में कुछ मामूली अंतरों के साथ समर्थित है। POSIX एक अधिक सीमित सिंटैक्स परिभाषित करता है जो grep और sed द्वारा उपयोग किया जाता है। भाषाओं के बीच पैटर्न स्थानांतरित करते समय ये अंतर महत्त्वपूर्ण हैं: JavaScript में कार्य करने वाला lookahead Go के RE2 इंजन में बिल्कुल भी संकलित नहीं हो सकता।

ऑनलाइन Regex परीक्षक क्यों उपयोग करें?

किसी कोड फ़ाइल में regex लिखने का अर्थ है — प्रत्येक बार पैटर्न समायोजित करने पर फ़ाइल सहेजना, चलाना, और आउटपुट जाँचना। ब्राउज़र-आधारित regex परीक्षक यह feedback loop खत्म कर देता है: आप टाइप करते हैं, मिलान तुरंत दिखते हैं।

वास्तविक समय में मिलान हाइलाइटिंग
प्रत्येक कीस्ट्रोक पर मिलान परिणाम तत्काल अद्यतन होते हैं। आप देख सकते हैं कि पाठ के कौन-से भाग मेल खाते हैं, कौन-से कैप्चर समूह भरे हैं, और प्रत्येक मिलान कहाँ आरंभ और समाप्त होता है — बिना किसी compile-run-debug cycle के।
🔒
गोपनीयता-केंद्रित प्रसंस्करण
पैटर्न मिलान आपके ब्राउज़र में JavaScript के RegExp इंजन का उपयोग करके चलता है। कोई भी पाठ या पैटर्न किसी सर्वर पर नहीं भेजा जाता। यह तब महत्त्वपूर्ण है जब आप लॉग फ़ाइलों, ग्राहक डेटा, या संवेदनशील जानकारी युक्त API प्रतिक्रियाओं के विरुद्ध परीक्षण कर रहे हों।
🔍
दृश्य मिलान निरीक्षण
मिलान उनकी स्थितियों और कैप्चर समूह मानों के साथ इनलाइन हाइलाइट किए जाते हैं। मिलान को दृश्य रूप से देखने से quantifiers में off-by-one errors या missing anchors पकड़ना आसान हो जाता है।
🌐
कोई लॉगिन या इंस्टॉलेशन आवश्यक नहीं
आधुनिक ब्राउज़र वाले किसी भी उपकरण पर कार्य करता है। कोई खाता नहीं, कोई एक्सटेंशन नहीं, कोई IDE प्लग-इन नहीं। पृष्ठ खोलें, अपना पैटर्न और पाठ चिपकाएँ, और परीक्षण आरंभ करें।

Regex Tester के उपयोग के अवसर

Frontend इनपुट सत्यापन
HTML5 pattern विशेषताओं या JavaScript सत्यापन तर्क में जोड़ने से पहले ईमेल, फ़ोन नंबर, या क्रेडिट कार्ड फ़ील्ड के लिए पैटर्न निर्मित और सत्यापित करें।
Backend लॉग विश्लेषण
अनुप्रयोग लॉग से टाइमस्टैम्प, त्रुटि कोड, या IP पते निकालने वाले regex पैटर्न लिखें। वास्तविक लॉग नमूनों के विरुद्ध परीक्षण करके सुनिश्चित करें कि पैटर्न सही समूह कैप्चर करता है।
DevOps और आधारभूत संरचना
Nginx location ब्लॉक, Apache rewrite नियमों, या Prometheus अलर्टिंग नियमों में उपयोग होने वाले regex को डीबग करें। सर्वर कॉन्फ़िगरेशन में गलत पैटर्न रूटिंग तोड़ सकता है या अलर्ट पूरी तरह चूक सकते हैं।
QA और परीक्षण स्वचालन
सत्यापित करें कि प्रतिक्रिया बॉडी या HTML आउटपुट अंत-से-अंत परीक्षण अभिकथनों में अपेक्षित पैटर्न से मेल खाते हैं। परीक्षण सूट में जोड़ने से पहले regex का यहाँ पूर्व-परीक्षण करें।
डेटा निष्कर्षण पाइपलाइन
असंरचित पाठ से संरचित फ़ील्ड निकालने के लिए पैटर्न का प्रारूप तैयार करें: उत्पाद मूल्य स्क्रेप करना, CSV के विशेष मामले पार्स करना, या ईमेल हेडर से मेटाडेटा निकालना।
रेगुलर एक्सप्रेशन सीखना
नमूना स्ट्रिंग के विरुद्ध मेटाकैरेक्टर, परिमाणक और समूहों के साथ प्रयोग करें। तत्काल दृश्य प्रतिक्रिया केवल दस्तावेज़ीकरण पढ़ने की तुलना में regex सिंटैक्स सीखना आसान बनाती है।

Regex सिंटैक्स त्वरित संदर्भ

नीचे दी गई तालिका सबसे अधिक उपयोग किए जाने वाले regex टोकन को शामिल करती है। ये JavaScript, Python, Go, PHP, और अधिकांश PCRE-संगत इंजनों में कार्य करते हैं। भाषा-विशिष्ट विस्तार (जैसे Python के सशर्त पैटर्न या JavaScript के \k सिंटैक्स वाले नामांकित समूह) कोड उदाहरण खंड में उल्लिखित हैं।

पैटर्ननामविवरण
.Any characterMatches any single character except newline (unless s flag is set)
\dDigitMatches [0-9]
\wWord characterMatches [a-zA-Z0-9_]
\sWhitespaceMatches space, tab, newline, carriage return, form feed
\bWord boundaryMatches the position between a word character and a non-word character
^Start of string/lineMatches the start of the input; with m flag, matches start of each line
$End of string/lineMatches the end of the input; with m flag, matches end of each line
*Zero or moreMatches the preceding token 0 or more times (greedy)
+One or moreMatches the preceding token 1 or more times (greedy)
?OptionalMatches the preceding token 0 or 1 time
{n,m}Quantifier rangeMatches the preceding token between n and m times
()Capturing groupGroups tokens and captures the matched text for back-references
(?:)Non-capturing groupGroups tokens without capturing the matched text
(?=)Positive lookaheadMatches a position followed by the given pattern, without consuming it
(?<=)Positive lookbehindMatches a position preceded by the given pattern, without consuming it
[abc]Character classMatches any one of the characters inside the brackets
[^abc]Negated classMatches any character not inside the brackets
|AlternationMatches the expression before or after the pipe

Regex फ्लैग की व्याख्या

फ्लैग (जिन्हें मॉडिफायर भी कहा जाता है) बदलते हैं कि इंजन पैटर्न को कैसे संसाधित करता है। JavaScript में आप उन्हें अंतिम स्लैश के बाद जोड़ते हैं: /pattern/gi। Python में आप उन्हें दूसरे तर्क के रूप में पास करते हैं: re.findall(pattern, text, re.IGNORECASE | re.MULTILINE)। सभी फ्लैग हर भाषा में उपलब्ध नहीं होते।

फ्लैगनामव्यवहार
gGlobalFind all matches, not just the first one
iCase-insensitiveLetters match both uppercase and lowercase
mMultiline^ and $ match start/end of each line, not just the whole string
sDot-all. matches newline characters as well
uUnicodeTreat the pattern and subject as a Unicode string; enables \u{FFFF} syntax
yStickyMatches only from the lastIndex position in the target string

कोड उदाहरण

JavaScript, Python, Go, और कमांड लाइन में कार्यशील regex उदाहरण। प्रत्येक उदाहरण पैटर्न निर्माण, मिलान निष्कर्षण और आउटपुट दर्शाता है।

JavaScript
// Match all email addresses in a string
const text = 'Contact us at support@example.com or sales@example.com'
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g

const matches = text.matchAll(emailRegex)
for (const match of matches) {
  console.log(match[0], 'at index', match.index)
}
// → "support@example.com" at index 14
// → "sales@example.com" at index 37

// Named capture groups (ES2018+)
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
const result = '2026-03-30'.match(dateRegex)
console.log(result.groups)
// → { year: "2026", month: "03", day: "30" }

// Replace with a callback
'hello world'.replace(/\b\w/g, c => c.toUpperCase())
// → "Hello World"
Python
import re

# Find all IPv4 addresses
text = 'Server 192.168.1.1 responded, fallback to 10.0.0.255'
pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'

matches = re.findall(pattern, text)
print(matches)  # → ['192.168.1.1', '10.0.0.255']

# Named groups and match objects
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, 'Released on 2026-03-30')
if m:
    print(m.group('year'))   # → '2026'
    print(m.group('month'))  # → '03'

# Compile for repeated use (faster in loops)
compiled = re.compile(r'\b[A-Z][a-z]+\b')
words = compiled.findall('Hello World Foo bar')
print(words)  # → ['Hello', 'World', 'Foo']
Go
package main

import (
	"fmt"
	"regexp"
)

func main() {
	// Find all matches
	re := regexp.MustCompile(`\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b`)
	text := "Contact support@example.com or sales@example.com"
	matches := re.FindAllString(text, -1)
	fmt.Println(matches)
	// → [support@example.com sales@example.com]

	// Named capture groups
	dateRe := regexp.MustCompile(`(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})`)
	match := dateRe.FindStringSubmatch("2026-03-30")
	for i, name := range dateRe.SubexpNames() {
		if name != "" {
			fmt.Printf("%s: %s\n", name, match[i])
		}
	}
	// → year: 2026
	// → month: 03
	// → day: 30

	// Replace with a function
	result := re.ReplaceAllStringFunc(text, func(s string) string {
		return "[REDACTED]"
	})
	fmt.Println(result)
	// → Contact [REDACTED] or [REDACTED]
}
CLI (grep / sed)
# Find lines matching an IP address pattern
grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' access.log

# Extract email addresses from a file
grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' contacts.txt

# Replace dates from YYYY-MM-DD to DD/MM/YYYY using sed
echo "2026-03-30" | sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/'
# → 30/03/2026

# Count matches per file in a directory
grep -rcE 'TODO|FIXME|HACK' src/
# → src/main.js:3
# → src/utils.js:1

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

Regex और glob पैटर्न में क्या अंतर है?
Glob पैटर्न (जैसे *.txt या src/**/*.js) एक सरल वाइल्डकार्ड सिंटैक्स है जिसका उपयोग शेल और बिल्ड उपकरणों में फ़ाइल पथ मिलान के लिए किया जाता है। ये * (कोई भी वर्ण), ? (एक वर्ण), और [] (वर्ण वर्ग) समर्थित करते हैं, लेकिन परिमाणक, समूह, lookahead, और विकल्प का अभाव होता है। Regex कहीं अधिक अभिव्यंजक है और मनमाने पाठ पर, न केवल फ़ाइल पथों पर, कार्य करता है। Glob पैटर्न *.json लगभग regex ^.*\.json$ के बराबर है।
Regex में शाब्दिक बिंदु या कोष्ठक का मिलान कैसे करें?
वर्ण के पहले बैकस्लैश लगाएँ: \. एक शाब्दिक अवधि से मेल खाता है, \[ एक शाब्दिक कोष्ठक से। वर्ण वर्ग [] के अंदर, बिंदु पहले से ही शाब्दिक होता है और एस्केप करने की आवश्यकता नहीं होती। एक सामान्य गलती है 192.168.1.1 को बिंदुओं को एस्केप किए बिना लिखना, जो 192x168y1z1 से भी मेल खाता है क्योंकि . का अर्थ "कोई भी वर्ण" है।
क्या मेरा परीक्षण डेटा किसी सर्वर पर भेजा जाता है?
नहीं। यह उपकरण JavaScript के RegExp इंजन का उपयोग करके regex मिलान पूरी तरह आपके ब्राउज़र में निष्पादित करता है। आपके पाठ या पैटर्न के साथ कोई नेटवर्क अनुरोध नहीं किया जाता। आप इसे अपने ब्राउज़र के DevTools नेटवर्क टैब को खोलकर उपकरण का उपयोग करते समय सत्यापित कर सकते हैं।
मेरा regex JavaScript में क्यों कार्य करता है लेकिन Python में विफल होता है?
JavaScript और Python थोड़े अलग-अलग सुविधा सेट वाले विभिन्न regex इंजनों का उपयोग करते हैं। JavaScript \d, lookahead (?=), और ES2018 से lookbehind (?<=) का समर्थन करता है, लेकिन सशर्त पैटर्न, atomic group, या possessive quantifier का नहीं। Python का re मॉड्यूल \p{} Unicode प्रॉपर्टी वर्गों का समर्थन नहीं करता (इसके बजाय तृतीय-पक्ष regex मॉड्यूल का उपयोग करें)। हमेशा लक्ष्य भाषा के इंजन में परीक्षण करें या उस भाषा के regex दस्तावेज़ीकरण से परामर्श लें।
Regex में विनाशकारी बैकट्रैकिंग का क्या कारण है?
विनाशकारी बैकट्रैकिंग तब होती है जब किसी पैटर्न में नेस्टेड परिमाणक होते हैं जो घातीय संख्या में मिलान पथ बनाते हैं। क्लासिक उदाहरण है (a+)+ को a वर्णों की एक ऐसी स्ट्रिंग पर लागू करना जिसके बाद कोई गैर-मिलान वर्ण हो। इंजन विफल होने से पहले आंतरिक और बाहरी समूहों के बीच a को विभाजित करने के हर संभावित तरीके का प्रयास करता है। इसे atomic group (?>), possessive quantifier a++, या अस्पष्ट पुनरावृत्ति से बचने के लिए पैटर्न को पुनर्लिखकर ठीक करें।
क्या मैं HTML पार्स करने के लिए regex का उपयोग कर सकता हूँ?
Regex एकल <a> टैग से href निकालने जैसे HTML खंडों से सरल मान निकाल सकता है। पूर्ण HTML पार्सिंग के लिए उचित पार्सर का उपयोग करें (JavaScript में DOMParser, Python में BeautifulSoup, या Go में html/template)। HTML एक संदर्भ-मुक्त व्याकरण है, और regex नियमित व्याकरण संभालता है। नेस्टेड टैग, वैकल्पिक विशेषताएँ, और स्वयं-समापन तत्व ऐसे पैटर्न बनाते हैं जिन्हें regex विश्वसनीय रूप से मेल नहीं कर सकता।
लालची और आलसी परिमाणकों में क्या अंतर है?
लालची परिमाणक (* या +) जितने संभव हो उतने वर्णों से मेल करता है, फिर यदि शेष पैटर्न विफल होता है तो पीछे जाता है। आलसी परिमाणक (*? या +?) जितने कम संभव हों उतने वर्णों से मेल करता है, आवश्यकता होने पर ही विस्तार करता है। इनपुट <b>one</b><b>two</b> के लिए, लालची पैटर्न <b>.*</b> पहले <b> से अंतिम </b> तक पूरी स्ट्रिंग से मेल करता है, जबकि आलसी पैटर्न <b>.*?</b> <b>one</b> और <b>two</b> से अलग-अलग मेल करता है।

संबंधित टूल

Word Counterशब्द, वर्ण, वाक्य, अनुच्छेद गिनें और पढ़ने का अनुमानित समय जानेंCase Converterटेक्स्ट को uppercase, lowercase, title case, camelCase, snake_case और अन्य फ़ॉर्मैट में बदलेंLorem Ipsum Generatorकॉन्फ़िगर करने योग्य पैराग्राफ और शब्दों के साथ lorem ipsum प्लेसहोल्डर टेक्स्ट जेनरेट करेंलाइन सॉर्टरपंक्तियों को वर्णमाला, लंबाई या यादृच्छिक क्रम में क्रमबद्ध करें या क्रम उलटेंDuplicate Line Removerटेक्स्ट से डुप्लीकेट पंक्तियाँ हटाएँ, केवल अद्वितीय पंक्तियाँ बनाए रखेंText Diffदो टेक्स्ट को साथ-साथ रखकर तुलना करें और पंक्ति दर पंक्ति अंतर हाइलाइट करेंMarkdown PreviewMarkdown टेक्स्ट को रियल-टाइम में HTML के रूप में प्रदर्शित करेंPassword Generatorकस्टम लंबाई और character set के साथ मज़बूत random पासवर्ड बनाएंSlug Generatorकिसी भी टेक्स्ट को साफ URL-अनुकूल स्लग में परिवर्तित करें