फोन नंबर पार्सर और फॉर्मेटर

अंतरराष्ट्रीय फ़ोन नंबरों को पार्स करें, उनका सत्यापन करें, और E.164, अंतरराष्ट्रीय, या राष्ट्रीय रूपों में फिर से फ़ॉर्मैट करें।

अंतरराष्ट्रीय फ़ोन नंबरों को पार्स करें, उनका सत्यापन करें, और E.164, अंतरराष्ट्रीय, या राष्ट्रीय रूपों में फिर से फ़ॉर्मैट करें। अंतरराष्ट्रीय फ़ोन नंबरों को पार्स करें, उनका सत्यापन करें, और E.164, अंतरराष्ट्रीय, या राष्ट्रीय रूपों में फिर से फ़ॉर्मैट करें।

पृष्ठभूमि

फ़ोन नंबर कैसे बनते हैं

एक अंतरराष्ट्रीय फ़ोन नंबर तीन तार्किक भागों से मिलकर बनता है: एक देश कॉलिंग कोड (उत्तरी अमेरिका के लिए 1, UK के लिए 44, चीन के लिए 86, जापान के लिए 81, और इसी तरह), एक राष्ट्रीय महत्वपूर्ण नंबर (एरिया कोड प्लस सब्सक्राइबर नंबर), और एक वैकल्पिक एक्सटेंशन। E.164 अनुशंसा कैनोनिकल रूप को परिभाषित करती है: एक अग्रणी +, देश कोड, फिर राष्ट्रीय नंबर बिना किसी पृथककर्ता के -- उदाहरण के लिए +14155552671। जब उपयोगकर्ता संख्याएँ स्वतंत्र रूप से टाइप करते हैं, तो वे रिक्त स्थान, डैश, ब्रैकेट, या अग्रणी शून्य शामिल कर सकते हैं जो केवल किसी देश के भीतर सार्थक होते हैं। एक अच्छा पार्सर उन्हें संरचित फ़ील्ड्स में सामान्यीकृत करता है।

पार्सिंग इतनी कठिन क्यों है

देश लगभग हर बात पर असहमत हैं: राष्ट्रीय नंबर की लंबाई, ट्रंक उपसर्गों का उपयोग (चीन विदेश से कॉल करते समय अग्रणी 0 हटा देता है, UK अपने ट्रंक 0 के साथ ऐसा ही करता है), मोबाइल बनाम फ़िक्स्ड उपसर्ग, और विशेष लघु कोड। 4444 कुछ देशों में एक वैध राष्ट्रीय नंबर है और दूसरों में अमान्य। नंबरिंग योजनाएँ भी चलते लक्ष्य हैं -- ब्राज़ील ने 2016 में सभी मोबाइल नंबरों में एक अंक जोड़ा, और हर देश का नियामक बदलाव प्रकाशित करता है। यही कारण है कि गंभीर वैधक हार्ड-कोडेड रेगेक्स के बजाय पूर्ण मेटाडेटा डेटाबेस लेकर चलते हैं। इस पृष्ठ को संचालित करने वाली लाइब्रेरी हर देश और क्षेत्र के लिए आधिकारिक Google मेटाडेटा को बंडल करती है, ताकि वह, उदाहरण के लिए, यह जानती हो कि चीन के मोबाइल नंबर 11 अंकों के होते हैं और 1 से शुरू होते हैं।

पार्सर का उपयोग करना

+ और देश कोड के साथ या बिना कोई नंबर टाइप करें। यदि आप देश कोड छोड़ देते हैं, तो राष्ट्रीय रूप को हल करने के लिए ड्रॉपडाउन से एक डिफ़ॉल्ट देश चुनें। टूल E.164 रूप, रिक्त स्थानों के साथ अंतरराष्ट्रीय फ़ॉर्मैटिंग, राष्ट्रीय फ़ॉर्मैटिंग, पता चला हुआ देश, कॉलिंग कोड, राष्ट्रीय नंबर, कि क्या नंबर वैध और संभव है, नंबर का प्रकार (मोबाइल, फ़िक्स्ड लाइन, टोल-फ्री, आदि), और कैरियर की रिपोर्ट करता है जब मेटाडेटा उसे निर्धारित कर सकता है। एक नंबर "संभव" (सही लंबाई और उपसर्ग आकार) हो सकता है बिना "वैध" (असाइन किया गया और ठीक से संरचित) हुए -- दोनों जाँचें दिखाई जाती हैं।

व्यावहारिक नोट्स

एक नग्न नंबर से देश का पता लगाना अनुमानात्मक है: +1 555 2671 स्पष्ट रूप से उत्तरी अमेरिका का अर्थ देता है, लेकिन लघु नंबर कई देशों से मेल खा सकते हैं। हमेशा मशीन-से-मशीन उपयोग के लिए देश कोड शामिल करें, और अपने डेटाबेस में E.164 रूप में नंबर संग्रहीत करें। उपयोगकर्ता इनपुट को सत्यापित करते समय, तत्काल UX प्रतिक्रिया के लिए "संभव" जाँच को प्राथमिकता दें और पूर्ण "वैध" जाँच को सबमिशन के लिए आरक्षित रखें। यह टूल आपके ब्राउज़र में बंडल किए गए libphonenumber-js (MIT) डेटा पर पूरी तरह चलता है -- आपके द्वारा टाइप किया गया कुछ भी प्रसारित नहीं किया जाता।

public/assets में बंडल किए गए MIT-लाइसेंस्ड libphonenumber-js लाइब्रेरी के साथ बनाया गया। पार्सिंग आपके ब्राउज़र में स्थानीय रूप से की जाती है।

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

मुझे 'संभव लेकिन वैध नहीं' क्यों मिलता है?
संभव का अर्थ है कि नंबर देश की सामान्य लंबाई और उपसर्ग आकार से मेल खाता है। वैध का अर्थ है कि यह आधिकारिक मेटाडेटा के तहत वास्तव में असाइन किया गया नंबर है। कई टेस्ट नंबर या अनअसाइन किए गए रेंज संभव होते हैं लेकिन वैध नहीं।
E.164 क्या है और इसे स्टोर क्यों करें?
E.164 फ़ोन नंबरों का ITU मानक है: + फिर देश कोड फिर राष्ट्रीय नंबर, अधिकतम 15 अंक। इस एकल कैनोनिकल रूप को स्टोर करने से डीडुप्लिकेशन और अंतरराष्ट्रीय डायलिंग तुच्छ हो जाता है, क्योंकि यह सभी देशों में असंदिग्ध है।
क्या मैं देश कोड के बिना नंबरों का सत्यापन कर सकता हूँ?
विश्वसनीय रूप से नहीं। बिना देश कोड के पार्सर को अनुमान लगाना पड़ता है, और लघु नंबर कई देशों में वैध हो सकते हैं। जब भी इनपुट स्पष्ट रूप से अंतरराष्ट्रीय न हो, एक डिफ़ॉल्ट देश (या कोड अनिवार्य) प्रदान करें।
नंबर का प्रकार कैसे निर्धारित किया जाता है?
बंडल किया गया मेटाडेटा उपसर्ग द्वारा रेंज को वर्गीकृत करता है: मोबाइल, फ़िक्स्ड लाइन, टोल-फ्री, प्रीमियम, VoIP, शेयर्ड कॉस्ट, और अधिक। प्रकार तभी दिखाया जाता है जब मेटाडेटा एक निर्धारित करता है; अन्यथा एक डैश दिखाई देता है।
क्या मेरा इनपुट कहीं भेजा जाता है?
नहीं। पार्सिंग, सत्यापन, और फ़ॉर्मैटिंग सब आपके ब्राउज़र में बंडल किए गए libphonenumber-js पैकेज (MIT) का उपयोग करके होते हैं। पृष्ठ लोड होने के बाद पूरी तरह ऑफ़लाइन काम करता है।
एक ही नंबर अलग-अलग देशों में अलग क्यों फ़ॉर्मैट होता है?
अंतरराष्ट्रीय फ़ॉर्मैटिंग अंकों को देश की अपनी परंपराओं से समूहित करती है (उदाहरण के लिए फ़्रेंच नंबर जोड़ियों में समूहित होते हैं, US नंबर 3-3-4 का उपयोग करते हैं)। E.164 चाहे कुछ भी हो वैसा ही रहता है; केवल प्रदर्शन रूप बदलता है।