Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Regular Expressions

जावास्क्रिप्ट में रेगुलर एक्सप्रेशन के लिए एक शुरुआती गाइड

by
Read Time:9 minsLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

जावास्क्रिप्ट के साथ काम करने वाले प्रत्येक व्यक्ति को एक बिंदु या दूसरे पर स्ट्रिंग्स से निपटना होगा। कभी-कभी, आपको हर दूसरे वेरिएबल के अंदर एक स्ट्रिंग स्टोर करना होगा और फिर इसके आगे बढ़ना होगा। किसी अन्य स्थिति में, आपको इसका निरीक्षण करना होगा और देखना होगा कि इसमें एक विशेष सबस्ट्रिंग है या नहीं।

हालांकि, चीजें हमेशा आसान नहीं होती हैं। ऐसे भी समय होंगे जब आप किसी विशेष सबस्ट्रिंग की तलाश नहीं करेंगे बल्कि सबस्ट्रिंग्स का एक सेट सर्च करेंगे जो एक निश्चित पैटर्न को फॉलो करता हो।

आइए मान लें कि आपको "Apples" के साथ एक स्ट्रिंग में "apples" की सभी आवृति (occurence) को रिप्लेस करना होगा। आप बस theMainString.replace("Apples", "apples") का उपयोग कर सकते हैं। अच्छा और आसान।

अब मान लीजिए कि आपको "appLes" को "apples" के साथ बदलना हो। इसी प्रकार, "appLES" भी "apples" बनाना हो। असल में, "Apple" के सभी केस वेरिएशन को "apple" में बदलना हो। आर्गुमेंट के रूप में सरल स्ट्रिंग्स को पास करना अब ऐसे केसेस में व्यावहारिक या कुशल नहीं होगा।

यह वह जगह है जहां रेगुलर एक्सप्रेशन आता हैं-आप बस केस-इन्सेंसेटिवे फ्लैग i का उपयोग कर सकते हैं और बस इसके साथ यह पूरा किया जा सकता है। फ्लैग को लगाकर, इससे कोई फर्क नहीं पड़ता कि ओरिजिनल स्ट्रिंग में "Apples", "APPles", "ApPlEs", या "Apples" शामिल हैं। इस शब्द के हर उदाहरण को "apples" के साथ बदल दिया जाएगा।

केस-इन्सेंसेटिव फ्लैग की तरह, रेगुलर एक्सप्रेशन कई अन्य फीचर प्रदान करता हैं जिन्हें इस ट्यूटोरियल में शामिल किया जाएगा।

जावास्क्रिप्ट में रेगुलर एक्सप्रेशन का उपयोग करना

विभिन्न String मेथड्स के अंदर रेगुलर एक्सप्रेशन को इंगित करने के लिए आपको थोड़ा अलग सिंटेक्स का उपयोग करना होगा। कोट्स में डाली गयी एक साधारण स्ट्रिंग के विपरीत, रेगुलर एक्सप्रेशन में स्लेश के बीच एक पैटर्न होता है। रेगुलर एक्सप्रेशन में उपयोग किए जाने वाले किसी भी फ्लैग को दूसरे स्लैश के बाद जोड़ा जाएगा।

पिछले उदाहरण पर वापस जाकर, यहां replace() मेथड रेगुलर एक्सप्रेशन और एक साधारण स्ट्रिंग के साथ कुछ ऐसा दिखाई देगा।

जैसा कि आप देख सकते हैं, रेगुलर एक्सप्रेशन दोनों मामलों में काम करता है। अब हम फ्लैग और विशेष करैक्टर के बारे में अधिक जानेंगे जो रेगुलर एक्सप्रेशन के अंदर पैटर्न बनाते हैं।

रेगुलर एक्सप्रेशन में बैकस्लैश

आप सामान्य करैक्टर को उनके सामने बैकस्लैश जोड़कर विशेष करैक्टर में बदल सकते हैं। इसी प्रकार, आप उनके सामने बैकस्लैश जोड़कर विशेष करैक्टर को सामान्य करैक्टर में बदल सकते हैं।

उदाहरण के लिए, d एक विशेष करैक्टर नहीं है। हालांकि, \d का प्रयोग स्ट्रिंग में एक डिजिट करैक्टर से मेल खाने के लिए किया जाता है। इसी तरह, D भी एक विशेष करैक्टर नहीं है, लेकिन \D का प्रयोग स्ट्रिंग में नॉन-डिजिट वाले करैक्टर से मेल खाने के लिए किया जाता है।

डिजिट करैक्टर में 0, 1, 2, 3, 4, 5, 6, 7, 8, और 9 शामिल हैं। जब आप रेगुलर एक्सप्रेशन के अंदर \d का उपयोग करते हैं, तो यह इन 9 में से किसी भी करैक्टर से मेल खाता है। जब आप रेगुलर एक्सप्रेशन के अंदर \D का उपयोग करते हैं, तो यह सभी नॉन-डिजिट वाले करैक्टर से मेल खाता है।

निम्नलिखित उदाहरण चीजों को स्पष्ट करेगा।

आपको ध्यान रखना चाहिए कि केवल सबसे पहले मिलान किए गए करैक्टर को तीसरे केस में बदला है। आप सभी मैच हुए करैक्टर को बदलने के लिए फ्लैग का भी उपयोग कर सकते हैं। हम बाद में इस तरह के फ्लैग के बारे में जानेंगे।

\d और \D की तरह, अन्य विशेष करैक्टर सीक्वेंस भी हैं।

  1. आप स्ट्रिंग में किसी भी "word" करैक्टर से मेल खाने के लिए \w का उपयोग कर सकते हैं। यहां, वर्ड करैक्टर A-Z, a-z, 0-9, और _ को संदर्भित करता है। तो, मूल रूप से, यह सभी अंकों, सभी लोअरकेस और अपरकेस करैक्टर, और अंडरस्कोर से मेल खाएगा।
  2. आप स्ट्रिंग में किसी भी नॉन-वर्ड करैक्टर से मेल खाने के लिए \W का उपयोग कर सकते हैं। यह %, $, #, ₹, आदि जैसे अक्षरों से मेल खाएगा।
  3. आप एक सफेद स्पेस कैरेक्टर से मेल खाने के लिए \s का उपयोग कर सकते हैं, जिसमें स्पेस, टैब, फॉर्म फीड और लाइन फीड शामिल है। इसी तरह, आप सफेद स्पेस के अलावा अन्य सभी करैक्टर से मेल खाने के लिए \S का उपयोग कर सकते हैं।
  4. आप \f, \n, \r, \t, और \v का उपयोग करके एक विशिष्ट सफेद वाइट करैक्टर भी देख सकते हैं, जो फॉर्म फ़ीड, लाइन फीड, कैरिज रिटर्न, हॉरिजॉन्टल टैब और वर्टीकल टैब के लिए स्टैंड करते है।

कभी-कभी, आपको उन स्थितियों का सामना करना पड़ेगा जहां आपको किसी शब्द को अपने ऑप्शन के साथ रिप्लेस करने की आवश्यकता होती है, लेकिन केवल तभी जब यह एक बड़े शब्द का हिस्सा हो। उदाहरण के लिए, निम्नलिखित वाक्य पर विचार करें:

"A lot of pineapple images were posted on the app".

इस केस में, हम "app" शब्द को "board" से बदलना चाहते हैं। हालांकि, एक साधारण रेगुलर एक्सप्रेशन पैटर्न का उपयोग करके "apple" को "boardle" में बदल दिया जाएगा, और अंतिम वाक्य इस तरह बन जाएगा:

"A lot of pineboardle images were posted on the app".

इस केस में, आप एक और विशेष करैक्टर सीक्वेंस का उपयोग कर सकते हैं: \b। यह शब्द बाउंड्री के लिए जाँच करता है। स्पेस शब्द, "$", "%", "#", आदि जैसे नॉन-वर्ड करैक्टर के उपयोग से एक शब्द सीमा बनाई जाती है। हालांकि, इसमें "ü" जैसे उच्चारण करैक्टर भी शामिल हैं।

इसी प्रकार, आप नॉन-वर्ड सीमा से मेल खाने के लिए \B का उपयोग कर सकते हैं। उदाहरण के लिए, आप "app" से मेल खाने के लिए \B का उपयोग कर सकते हैं जब यह किसी अन्य शब्द के भीतर होता है, जैसे "pineapple"।

एक पैटर्न मिलान "n" टाइम्स की संख्या

आप जावास्क्रिप्ट को केवल एक मैच के लिए स्ट्रिंग की शुरुआत को देखने के लिए ^ का उपयोग कर सकते हैं। इसी तरह, आप केवल एक मैच के लिए स्ट्रिंग के अंत को देखने के लिए $ का उपयोग कर सकते हैं।

आप पिछली एक्सप्रेशन 0 या अधिक बार मिलान करने के लिए * का उपयोग कर सकते हैं। उदाहरण के लिए, /Ap*/ A, Ap, App, Appp, और इसी तरह से मेल खाएगा।

इसी तरह, आप पिछले एक्सप्रेशन 1 या अधिक बार मिलान करने के लिए + का उपयोग कर सकते हैं। उदाहरण के लिए, /Ap+/ Ap, App, Appp, और इसी तरह के अन्य से मेल खाएगा। एक्सप्रेशन इस बार सिंगल A से मेल नहीं खाएगी।

कभी-कभी, आप केवल किसी दिए गए पैटर्न की विशिष्ट संख्याओं से मेल खाना चाहते हैं। ऐसे मामलों में, आपको {n} करैक्टर सीक्वेंस का उपयोग करना चाहिए, जहां n एक संख्या है। उदाहरण के लिए, /Ap{2}/ App से मेल खाएगा लेकिन Ap से नहीं। यह Appp में पहले दो 'p' से भी मेल खाता है और तीसरे को छोड़ देगा।

आप किसी दिए गए एक्सप्रेशन की कम से कम 'n' आवृति (occurences) से मेल खाने के लिए {n,} का उपयोग कर सकते हैं। इसका मतलब है कि /Ap{2,}/ App से मेल खाएगा लेकिन Ap नहीं। यह Appp में सभी 'p' से मेल खाता है और उन्हें आपके रिप्लेसमेंट स्ट्रिंग के साथ बदल देगा।

आप न्यूनतम और अधिकतम संख्या निर्दिष्ट करने के लिए {n, m} का भी उपयोग कर सकते हैं और दिए गए एक्सप्रेशन से मेल खाने की संख्या को सीमित कर सकते हैं। उदाहरण के लिए, /Ap{2,4}/ App, Appp और Apppp से मेल खाएगा। यह Apppppp में पहले चार 'p' से भी मेल खाता है और बाकी हिस्सों को छोड़ देगा।

मैच याद रखने के लिए पैरेंथेसेस का उपयोग करना

अब तक, हमने केवल कांस्टेंट स्ट्रिंग वाले पैटर्न बदले गए हैं। उदाहरण के लिए, पिछले सेक्शन में, हमारे द्वारा उपयोग किए जाने वाले रिप्लेसमेंट हमेशा "Add" था। कभी-कभी, आपको दिए गए स्ट्रिंग के अंदर एक पैटर्न मिलान देखना होगा और उसके बाद पैटर्न के एक हिस्से के साथ इसे बदलना होगा।

आइए मान लें कि आपको स्ट्रिंग में पांच या अधिक अक्षर वाले शब्द को ढूंढना है और फिर शब्द के अंत में "s" जोड़ना है। ऐसे मामलों में, आप कांस्टेंट स्ट्रिंग वैल्यू को रिप्लेसमेंट के रूप में उपयोग करने में सक्षम नहीं होंगे क्योंकि अंतिम वैल्यू मिलान पैटर्न पर निर्भर करता है।

यह एक साधारण उदाहरण था, लेकिन आप मेमोरी में एक से अधिक मिलान पैटर्न रखने के लिए एक ही तकनीक का उपयोग कर सकते हैं। पूर्ण मिलान में उप-पैटर्न की संख्या का उपयोग किए गए पैरेंथेसेस की संख्या द्वारा निर्धारित किया जाएगा।

रिप्लेसमेंट स्ट्रिंग के अंदर, पहला उप-मैच $1 का उपयोग करके पहचाना जाएगा, दूसरा उप-मैच $2 का उपयोग करके पहचाना जाएगा, और इसी तरह से आगे। पैरेंथेसेस के उपयोग को और स्पष्ट करने के लिए यहां एक और उदाहरण दिया गया है।

रेगुलर एक्सप्रेशन के साथ फ्लैग का उपयोग करना

जैसा कि मैंने परिचय में उल्लेख किया है, रेगुलर एक्सप्रेशन की एक और महत्वपूर्ण विशेषता यह है कि एक सर्च कैसे किया जाता है, संशोधित करने के लिए विशेष फ्लैग का उपयोग होता है। फ्लैग ऑप्शनल हैं, लेकिन आप उन्हें सर्च को ग्लोबल या केस-इन्सेंसेटिव बनाने जैसी चीजों के लिए उपयोग कर सकते हैं।

जावास्क्रिप्ट की सर्च या स्ट्रिंग को रिप्लेस करने के लिए ये चार आम तौर पर इस्तेमाल किए जाने वाले फ्लैग हैं।

  • g: यह फ्लैग पहले मैच के बाद रोकने के बजाय ग्लोबल सर्च करेगा।
  • i: यह फ्लैग एक सटीक केस मैच की जांच किए बिना एक सर्च करेगा। उदाहरण के लिए, Apple, aPPLe, और apPLE सभी को केस-इन्सेंसेटिव सर्च के दौरान समान माना जाता है।
  • m: यह फ्लैग एक मल्टी-लाइन सर्च करेगा।
  • y: यह फ्लैग lastIndex प्रॉपर्टी द्वारा इंगित इंडेक्स में एक मैच की तलाश करेगा।

फ़्लैग के साथ उपयोग किए जाने वाले रेगुलर एक्सप्रेशन के कुछ उदाहरण यहां दिए गए हैं:

अंतिम विचार

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

आखिरकार, हमने आमतौर पर इस्तेमाल किए जाने वाले फ्लैग के बारे में सीखा जो रेगुलर एक्सप्रेशन को और अधिक शक्तिशाली बनाते हैं। आप MDN पर इस आर्टिकल में बताये गए रेगुलर एक्सप्रेशन के बारे में अधिक जान सकते हैं।

यदि ऐसा कुछ भी है जिसका आप मुझसे इस ट्यूटोरियल से स्पष्टीकरण लेना चाहते हैं, तो मुझे कमैंट्स में मुझे बताने में संकोच न करें।

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.