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

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

परिचय

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

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

पैटर्न मिलान के लिए नियमित अभिव्यक्ति शक्तिशाली उपकरण हैं। वे आपके उपयोग के मामले के आधार पर, विभिन्न प्रकार के पैटर्न से मेल खाने की लचीलापन प्रदान करते हैं। इसके अतिरिक्त, नियमित अभिव्यक्तियाँ भाषा-अज्ञेयवादी होती हैं, जो आपके सत्यापन तर्क को अधिक पोर्टेबल बनाती हैं, क्योंकि आप आसानी से मूल सत्यापन को एकीकृत कर सकते हैं। जावास्क्रिप्ट में रेगेक्स के साथ काम करना एक सीधा काम है।

यह आलेख आपको यह समझने में मदद करेगा कि अपने एप्लिकेशन के लिए फ़ोन नंबरों को मान्य करने के लिए रेगुलर एक्सप्रेशन की शक्ति का उपयोग कैसे करें। आप देश कोड के साथ फ़ोन नंबरों को सत्यापित करने के लिए एक सरल जावास्क्रिप्ट फ़ंक्शन लिखेंगे।

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

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

मान लीजिए कि आप किसी दस्तावेज़ में एक ईमेल पता ढूंढना चाहते हैं। ईमेल पता कोई भी पता हो सकता है, कोई विशिष्ट नहीं। एक सरल अभिव्यक्ति लिखने से आपको पैटर्न जल्दी ढूंढने में मदद मिलेगी क्योंकि आप पहले से ही ईमेल पते की संरचना जानते हैं।

एक रेगुलर एक्सप्रेशन विभिन्न प्रकार के पैटर्न को दर्शाने के लिए विशेष वर्णों का उपयोग करता है। उदाहरण के लिए:

  • . (डॉट) एक विशेष वर्ण है जो किसी भी वर्ण से मेल खा सकता है।
  • * (तारांकन) पिछले वर्ण से 0 या अधिक बार मेल खाता है।
  • + (प्लस) पिछले वर्ण से एक या अधिक बार मेल खाता है।
  • ? (प्रश्न चिह्न) पूर्ववर्ती वर्ण को वैकल्पिक बनाता है।
  • [abc] किसी भी अक्षर से मेल खाता है a, bया, c.
  • (abc) पात्रों को एक साथ समूहित करें।
  • ^ (कैरेट) पंक्ति की शुरुआत से मेल खाता है।
  • $ (डॉलर) पंक्ति के अंत से मेल खाता है।

ये तो बहुत कम हैं। यदि आप गहराई से जानना चाहते हैं और अधिक पैटर्न के बारे में जानना चाहते हैं, तो आप इसका संदर्भ ले सकते हैं यह दस्तावेज़ Microsoft से.

आइए एक रेगुलर एक्सप्रेशन बनाएं जो जांचता है कि संख्याओं का दिया गया सेट पांच अंकों का ज़िप कोड है या नहीं। अभिव्यक्ति लिखना शुरू करने के लिए, हम इसका उपयोग करेंगे ^ (कैरेट) चिह्न, क्योंकि यह पंक्ति की शुरुआत से मेल खाता है। नियमित अभिव्यक्ति में, d किसी भी अंक और घुंघराले ब्रेसिज़ के अंदर एक संख्या से मेल खाता है ({}) पिछले तत्व से बिल्कुल ब्रेसिज़ के अंदर दी गई संख्या से मेल खाता है। उपरोक्त सूची से, हम यह जानते हैं $ पंक्ति के अंत के मिलान के लिए उपयोग किया जाता है।

इस जानकारी को संयोजित करने पर, हमें इस तरह एक नियमित अभिव्यक्ति मिलती है:

/^d{5}$/

अब, आइए अभिव्यक्ति को बेहतर ढंग से समझने के लिए नीचे दिए गए ग्राफ़िक की जाँच करें।

पांच अंकों के ज़िप कोड से मेल खाने के लिए नियमित अभिव्यक्ति

पांच अंकों वाले ज़िप कोड से मिलान करने के लिए नियमित अभिव्यक्ति

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

जावास्क्रिप्ट नियमित अभिव्यक्तियाँ

जावास्क्रिप्ट है सबसे लोकप्रिय प्रोग्रामिंग भाषा डेवलपर्स के बीच. चूँकि लगभग सभी वेब अनुप्रयोगों के लिए जावास्क्रिप्ट की आवश्यकता होती है, इसलिए यह समझना महत्वपूर्ण है कि इस भाषा में नियमित अभिव्यक्तियों का उपयोग कैसे किया जा सकता है।

जावास्क्रिप्ट में, RegExp ऑब्जेक्ट का उपयोग पैटर्न मिलान के लिए किया जाता है। इस वस्तु का उपयोग दो तरीकों से किया जा सकता है:

  • शाब्दिक संकेतन का उपयोग करते हुए, जहां दो फॉरवर्ड स्लैश के बीच एक पैटर्न स्वरूपित किया जाता है
  • कंस्ट्रक्टर नोटेशन का उपयोग करना, जहां या तो एक स्ट्रिंग या ए RegExp ऑब्जेक्ट पारित हो गया है

शाब्दिक संकेतन का उपयोग इस प्रकार सरलता से किया जा सकता है:

const expr = /^d{5}$/i;

दूसरी ओर, कंस्ट्रक्टर नोटेशन के साथ, आपको इसका उपयोग करने की आवश्यकता होगी RegExp इसका एक उदाहरण बनाने के लिए कंस्ट्रक्टर। यह इस प्रकार दिखता है:

const expr = new RegExp(/^d{5}$/, "i");

आप यहां से RegExp ऑब्जेक्ट के बारे में अधिक पढ़ सकते हैं आधिकारिक एमडीएन दस्तावेज़. अब, आइए फ़ोन नंबर सत्यापन के महत्व और फ़ोन नंबर के विभिन्न घटकों का पता लगाएं।

फ़ोन नंबर सत्यापन और घटक

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

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

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

आम तौर पर, एक फ़ोन नंबर में चार भाग होते हैं:

  • देश कोड: पहले 1 से 3 अंक (देश के आधार पर) फ़ोन नंबर के देश को परिभाषित करते हैं। यह कोड कॉल को सही देश में रूट करने की अनुमति देता है। कोई भी देश कोड 0 से प्रारंभ नहीं हो सकता.

आप वर्तमान में जिस लेख का संपादन कर रहे हैं उसका शीर्षक है "नियमित अभिव्यक्तियों के साथ जावास्क्रिप्ट में फ़ोन नंबर मान्य करें"। संपादित करने के लिए पाठ का भाग:

  • क्षेत्र कोड: शहर या डायलिंग कोड के रूप में भी जाना जाता है, नंबर का यह हिस्सा कॉल को देश के भीतर सही भौगोलिक क्षेत्र में रूट करने में मदद करता है। संयुक्त राज्य अमेरिका जैसे कुछ देशों में, क्षेत्र कोड किसी विशेष सेवा के लिए फ़ोन नंबरों के एक विशिष्ट सेट का भी संकेत दे सकते हैं। इसके अतिरिक्त, उत्तरी अमेरिका में, कोई क्षेत्र कोड 0 या 1 से शुरू नहीं हो सकता।
  • टेलीफोन उपसर्ग: संख्याओं का यह क्रम टेलीफोन कंपनी द्वारा एक विशिष्ट केंद्रीय कार्यालय या टेलीफोन एक्सचेंज को सौंपा जाता है, जो विशिष्ट भौगोलिक क्षेत्र या पड़ोस को और कम कर देता है।
  • लाइन नंबर: यह उपसर्ग क्षेत्र के भीतर किसी घर या व्यवसाय के लिए विशिष्ट फ़ोन लाइन को निर्दिष्ट अद्वितीय नंबर है। संख्या का यह भाग आमतौर पर यह सुनिश्चित करता है कि किसी देश, क्षेत्र और उपसर्ग के भीतर प्रत्येक फ़ोन नंबर अद्वितीय है।

देश कोड को छोड़कर, शेष भागों के संयोजन से दस अंकों का फोन नंबर बनता है, जहां क्षेत्र कोड और टेलीफोन उपसर्ग तीन अंकों के होते हैं, और लाइन नंबर चार अंकों का होता है।

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

फ़ोन नंबर सत्यापन के लिए एक रेगेक्स बनाएं

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

COUNTRY_CODE-AREA_CODE-TELEPHONE_PREFIX-LINE_NUMBER

उदाहरण के लिए, हमारे फ़ंक्शन के लिए एक वैध फ़ोन नंबर इस प्रकार होगा +123-456-789-1234, लेकिन नहीं +012-123-456-7890 or +12-123-456-789, क्योंकि ये फ़ोन नंबर उन फ़ोन नंबरों के नियमों का पालन नहीं करते हैं जिनकी हमने पहले चर्चा की थी।

अब, चलिए रेगुलर एक्सप्रेशन लिखने की ओर बढ़ते हैं। सबसे पहले, आइए जाँच करें कि क्या देश कोड 1 से 3 अंक लंबा है और शून्य से शुरू नहीं होता है।

रेगुलर एक्सप्रेशन की शुरुआत को इंगित करने के लिए, कैरेट का उपयोग करें (^), फिर पुष्टि करें कि प्रारंभ में प्लस मौजूद है। इस उद्देश्य के लिए, आइए उपयोग करें +, जो इस बात से मेल खाएगा कि प्लस शुरुआत में मौजूद है। अब, यह सुनिश्चित करने के लिए कि देश कोड के अंक एक से तीन अंकों के बीच हैं और पहला अंक शून्य नहीं है, हम कुछ इस तरह लिख सकते हैं: [1-9]{1}[0-9]{0,2}। यहाँ, [1-9]{1} निर्दिष्ट करता है कि 1 से 9 तक का कोई भी अंक ठीक एक बार अस्तित्व में हो सकता है, और इसी तरह, [0-9]{0,2} इंगित करता है कि 0 से 9 तक का कोई भी अंक शून्य से दो बार मौजूद हो सकता है।

विभाजक के लिए, हम एक जोड़ सकते हैं - (हाइफ़न) संख्या के अनुभागों के बीच। एक - देश कोड सत्यापन के बाद जोड़ा जा सकता है। तो, इस बिंदु पर, रेगेक्स इस तरह दिखता है:

^+[1-9]{1}[0-9]{0,2}-$

RSI $ अंत में पंक्ति का अंत निर्दिष्ट करता है। अब, क्षेत्र कोड के लिए, यह काफी समान होगा। कोई क्षेत्र कोड शून्य या एक से शुरू नहीं हो सकता। तो, पहला भाग होगा [2-9]{1}. यह मेल खाता है कि पहली संख्या 2 और 9 के बीच है। यह मिलान एक बार होता है। फिर, बाकी कोड के लिए, हम लिख सकते हैं [0-9]{2}. इससे यह सुनिश्चित हो जाएगा कि पहले अंक के बाद ठीक दो अंक हैं, और प्रत्येक अंक के लिए, सीमा 0 और 9 के बीच है। फिर से, अंत में हाइफ़न विभाजक जोड़ें।

अब, पूरा regexp इस तरह दिखेगा:

^+[1-9]{1}[0-9]{0,2}-[2-9]{1}[0-9]{2}-$
|----Country Code---|-|---Area Code--|-|

आइए टेलीफोन उपसर्ग की जाँच के लिए फिर से उसी पैटर्न का उपयोग करें। आइए मान लें कि टेलीफोन उपसर्ग भी शून्य या एक से शुरू नहीं हो सकता। तो, जोड़ रहा हूँ [2-9]{1}[0-9]{2} और एक हाइफ़न फिर से अभिव्यक्ति को इस तरह बना देगा:

^+[1-9]{1}[0-9]{0,2}-[2-9]{1}[0-9]{2}-[2-9]{1}[0-9]{2}-$
|----Country Code---|-|---Area Code--|-|--Tel Prefix--|-|

अब बचा हुआ एकमात्र भाग पंक्ति संख्या है, जो बिल्कुल चार की लंबाई के साथ कोई भी अंक हो सकता है। यह अन्य की तुलना में सरल है. अभिव्यक्ति है [0-9]{4}.

संपूर्ण अभिव्यक्ति इस प्रकार है:

^+[1-9]{1}[0-9]{0,2}-[2-9]{1}[0-9]{2}-[2-9]{1}[0-9]{2}-[0-9]{4}$
|----Country Code---|-|---Area Code--|-|--Tel Prefix--|-|-Line-|

आपने घुंघराले ब्रेसिज़ के लगातार उपयोग पर ध्यान दिया होगा। इनका उपयोग ब्रेस के अंदर दिए गए उदाहरणों से मिलान करने के लिए किया जाता है। यदि यह एक विशिष्ट अंक है, जैसे {1}, यह पूर्ववर्ती पैटर्न से बिल्कुल एक बार मेल खाएगा। हालाँकि, यदि यह एक सीमा है, जैसे {0, 2}, यह मैचों की न्यूनतम और अधिकतम संख्या को परिभाषित करता है। तो, के मामले में {0, 2}, यह न्यूनतम शून्य बार और अधिकतम दो बार पैटर्न से मेल खाएगा।

पैटर्न तैयार है. अब हम रेगुलर एक्सप्रेशन का उपयोग करके यह जांचने के लिए एक सरल जावास्क्रिप्ट फ़ंक्शन लिख सकते हैं कि कोई फ़ोन नंबर वैध है या नहीं। यहाँ समारोह है:

function validatePhoneNumber(phoneNumber) { const pattern = new RegExp("^+[1-9]{1}[0-9]{0,2}-[2-9]{1}[0-9]{2}-[2-9]{1}[0-9]{2}-[0-9]{4}$"); if (pattern.test(phoneNumber)) { console.log("Phone number is valid"); return true; } else { console.log("Phone number is not valid"); return false; }
} validatePhoneNumber("+123-456-789-1234"); validatePhoneNumber("+0-123-456-7890"); validatePhoneNumber("+12-012-123-1234"); 

कार्य बिल्कुल सीधा है. यह इनपुट के रूप में एक फ़ोन नंबर लेता है। रेगुलर एक्सप्रेशन पैटर्न को एक वेरिएबल के अंदर संग्रहीत किया जाता है जिसे कहा जाता है pattern. पैटर्न को RegExp कंस्ट्रक्टर का उपयोग करके त्वरित किया जाता है और एक्सप्रेशन को कंस्ट्रक्टर के पैरामीटर के रूप में पास किया जाता है। फिर, हम इसका उपयोग करके फ़ोन नंबर का परीक्षण करते हैं test ऑब्जेक्ट में विधि उपलब्ध है। यदि-और कथन का उपयोग करके, हम जाँचते हैं कि फ़ोन नंबर परीक्षण में उत्तीर्ण हुआ है या नहीं। यदि ऐसा होता है, तो हम true लौटाते हैं और एक कंसोल संदेश भेजते हैं जिसमें कहा गया है कि Phone number is valid. अन्यथा, यह गलत रिटर्न देता है और एक कंसोल संदेश प्रदर्शित करता है जो दर्शाता है कि फ़ोन नंबर मान्य नहीं है।

इसके साथ, हम जाने के लिए तैयार हैं। अब, आप यह देखने के लिए अपने फ़ोन नंबरों का परीक्षण कर सकते हैं कि क्या वे वैध हैं।

सारांश

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

नियमित अभिव्यक्तियों की बुनियादी समझ के साथ, अब आप अतिरिक्त पैटर्न तलाश सकते हैं। आप जैसे टूल का भी उपयोग कर सकते हैं रेगेक्स101 अपने भावों को ऑनलाइन सत्यापित करने के लिए।

समय टिकट:

से अधिक स्टैकब्यूज