JavaScript के लिए Regex टेस्टर

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

आपके ब्राउज़र में चलता हैसाइन-अप ज़रूरी नहींकुछ भी अपलोड नहीं होता

हाइलाइट किए गए मैच

    
$1, $<name>, $& (पूरा मैच) इस्तेमाल करें
मैच का विवरण
#इंडेक्समैचग्रुप
Regex चीट शीट
.न्यूलाइन को छोड़कर कोई भी अक्षर (s के साथ कोई भी)
\d \w \sअंक, शब्द अक्षर, व्हाइटस्पेस
\D \W \Sअंक नहीं, शब्द नहीं, व्हाइटस्पेस नहीं
[abc] [^abc]a, b, c में से कोई / इनमें से कोई नहीं
[a-z0-9]अक्षरों की रेंज
\p{L} \p{N}Unicode अक्षर / संख्या (u ज़रूरी)
^ $इनपुट की शुरुआत / अंत (m के साथ लाइन की)
\b \Bशब्द सीमा / सीमा नहीं
* + ?0 या अधिक, 1 या अधिक, 0 या 1
{n} {n,} {n,m}ठीक n, कम से कम n, n और m के बीच
*? +? ??Lazy (जितना कम हो सके)
a|ba या b
(…)कैप्चर ग्रुप, $1 से रेफ़र होता है
(?<name>…)नामित ग्रुप, $<name>
(?:…)नॉन-कैप्चरिंग ग्रुप
\1 \k<name>बैकरेफ़रेंस
(?=…) (?!…)Lookahead / negative lookahead
(?<=…) (?<!…)Lookbehind / negative lookbehind
\. \* \\Escape किए गए लिटरल अक्षर
\n \t \rन्यूलाइन, टैब, कैरिज रिटर्न
\uFFFFUnicode कोड यूनिट
\u{1F600}कोड पॉइंट (u ज़रूरी)
$&रिप्लेसमेंट में पूरा मैच
$` $'मैच से पहले / बाद का टेक्स्ट

Regex टेस्टर का उपयोग कैसे करें

  1. अपना पैटर्न स्लैश के बीच दर्ज करें, आसपास के / के बिना।
  2. g (सभी मैच), i (केस अनदेखा) और m (multiline) जैसे फ़्लैग चालू/बंद करें।
  3. अपना टेस्ट टेक्स्ट पेस्ट करें। मैच दाईं ओर हाइलाइट होते हैं और नीचे उनके इंडेक्स और कैप्चर ग्रुप के साथ सूचीबद्ध होते हैं।
  4. बदलें पर टिक करें और $1 या $<name> जैसा रिप्लेसमेंट दर्ज करें, ताकि String.replace का प्रीव्यू दिखे।
  5. टेस्ट किए गए ईमेल, URL, IP या तारीख regex से शुरू करने के लिए पैटर्न लाइब्रेरी से कोई पैटर्न चुनें।

JavaScript रेगुलर एक्सप्रेशन

यह टेस्टर आपके ब्राउज़र का अपना RegExp इंजन इस्तेमाल करता है, इसलिए नतीजे बिल्कुल वही हैं जो JavaScript और Node.js में String.match, matchAll, replace और RegExp.exec लौटाते हैं। इसमें आधुनिक सिंटैक्स शामिल है: नामित ग्रुप (?<name>…), lookbehind (?<=…), u फ़्लैग के साथ \p{L} जैसे Unicode property escape, और d फ़्लैग के साथ मैच इंडेक्स।

फ़्लैग क्या करते हैं

फ़्लैगनामअसर
gglobalपहले मैच पर रुकने के बजाय हर मैच खोजें।
iignoreCaseअक्षर केस की परवाह किए बिना मैच होते हैं।
mmultiline^ और $ हर लाइन की शुरुआत और अंत पर मैच होते हैं।
sdotAll. लाइन ब्रेक से भी मैच करता है।
uunicodeपैटर्न को कोड पॉइंट के रूप में लेता है; \p{…} और \u{…} चालू करता है।
ystickyसिर्फ़ मौजूदा lastIndex स्थिति पर मैच करता है।
dhasIndicesहर कैप्चर ग्रुप की शुरुआत और अंत की स्थिति बताता है।

Catastrophic backtracking से सुरक्षा

(a+)+$ या (\w|\d)*x जैसे नेस्टेड क्वांटिफ़ायर वाले पैटर्न लगभग मेल खाने वाले इनपुट पर exponential समय ले सकते हैं। सामान्य वेब पेज में इससे टैब फ़्रीज़ हो जाता है। यहाँ हर मैच बैकग्राउंड Web Worker में चलता है जिसे एक सेकंड बाद रोक दिया जाता है, और अटके ब्राउज़र के बजाय आपको साफ़ चेतावनी मिलती है। प्रोडक्शन कोड में यही पैटर्न ReDoS कमज़ोरी हो सकता है, इसलिए चेतावनी को ठीक करने लायक बग मानें।

बेहतर regex लिखने के टिप्स

  • पूरी वैल्यू वैलिडेट करते समय पैटर्न को ^ और $ से एंकर करें, वरना स्ट्रिंग में कहीं भी मैच होने पर वह पास हो जाएगी।
  • .* के बजाय [^"]* जैसी खास क्लास को प्राथमिकता दें; वे तेज़ हैं और ज़रूरत से ज़्यादा मैच होने से बचाती हैं।
  • जब कैप्चर की गई वैल्यू की ज़रूरत न हो, तो नॉन-कैप्चरिंग ग्रुप (?:…) इस्तेमाल करें।
  • अपने ग्रुप को नाम दें। match.groups.year को match[1] से पढ़ना आसान है।

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

यह टेस्टर कौन-सा regex flavor इस्तेमाल करता है?
JavaScript (ECMAScript), आपके ब्राउज़र के बिल्ट-इन RegExp के ज़रिए। ज़्यादातर सिंटैक्स PCRE, Python और Java के साथ साझा है, लेकिन possessive quantifiers, atomic groups और (?i) जैसे इनलाइन modifiers JavaScript में उपलब्ध नहीं हैं।
मेरा पैटर्न सिर्फ़ एक मैच क्यों खोजता है?
g (global) फ़्लैग के बिना JavaScript पहले मैच के बाद रुक जाता है। हर occurrence खोजने के लिए g चालू करें।
रिप्लेसमेंट में ग्रुप को कैसे रेफ़र करें?
नंबर वाले ग्रुप के लिए $1, $2…, नामित ग्रुप के लिए $<name>, पूरे मैच के लिए $& और असली डॉलर चिह्न के लिए $$ इस्तेमाल करें।
टेस्टर टाइमआउट के साथ क्यों रुक गया?
पैटर्न ने आपके इनपुट पर एक सेकंड से ज़्यादा समय लिया, जिसका मतलब लगभग हमेशा catastrophic backtracking होता है। (x+)+ जैसे नेस्टेड क्वांटिफ़ायर या (a|a)* जैसे ओवरलैप होने वाले विकल्प खोजें और उन्हें ऐसे दोबारा लिखें कि हर अक्षर सिर्फ़ एक तरीके से मैच हो सके।
क्या मेरा टेस्ट डेटा कहीं भेजा जाता है?
नहीं। मैचिंग आपके ब्राउज़र के अंदर Web Worker में लोकली चलती है। आपका पैटर्न और टेक्स्ट सिर्फ़ आपके अपने ब्राउज़र में सेव होते हैं ताकि वापस आने पर वे वहीं मिलें।

संबंधित टूल्स