मैं " libphonenumber " Google लाइब्रेरी को देखने का भी सुझाव दूंगा । मुझे पता है कि यह रेगेक्स नहीं है, लेकिन यह वही करता है जो आप चाहते हैं।
उदाहरण के लिए, यह पहचान लेगा कि:
15555555555
एक संभावित संख्या है, लेकिन एक वैध संख्या नहीं है। यह अमेरिका के बाहर के देशों का भी समर्थन करता है।
कार्यक्षमता की मुख्य विशेषताएं:
- दुनिया के सभी देशों / क्षेत्रों के लिए फोन नंबरों को पार्स / फॉर्मेट / वेरिफाई करना।
getNumberType
- संख्या के आधार पर संख्या का प्रकार ही प्राप्त करता है; फिक्स्ड-लाइन, मोबाइल, टोल-फ्री, प्रीमियम दर, साझा लागत, वीओआईपी और व्यक्तिगत नंबर (जब भी संभव हो) को भेद करने में सक्षम।
isNumberMatch
- दो नंबर समान हो सकते हैं या नहीं, इस पर एक आत्मविश्वास का स्तर मिलता है।
getExampleNumber
/ getExampleNumberByType
- सभी देशों / क्षेत्रों के लिए वैध उदाहरण संख्या प्रदान करता है, यह निर्दिष्ट करने के विकल्प के साथ कि किस प्रकार के उदाहरण फोन नंबर की आवश्यकता है।
isPossibleNumber
- जल्दी से यह अनुमान लगाते हुए कि क्या एक संख्या केवल लंबाई की जानकारी का उपयोग करके एक संभावित फोननंबर है, पूर्ण सत्यापन की तुलना में बहुत तेज है।
isValidNumber
- लंबाई और उपसर्ग जानकारी का उपयोग कर एक क्षेत्र के लिए एक फोन नंबर की पूरी मान्यता।
AsYouTypeFormatter
- जब उपयोगकर्ता प्रत्येक अंक दर्ज करते हैं, तो फ़ोन नंबर को फ़ॉरमेट करता है।
findNumbers
- पाठ इनपुट में संख्या पाता है।
PhoneNumberOfflineGeocoder
- एक फोन नंबर से संबंधित भौगोलिक जानकारी प्रदान करता है।
उदाहरण
फोन नंबर सत्यापन के साथ सबसे बड़ी समस्या यह बहुत सांस्कृतिक रूप से निर्भर है।
- अमेरिका
(408) 974–2042
एक वैध यूएस नंबर है
(999) 974–2042
है कोई मान्य नहीं अमेरिका संख्या
- ऑस्ट्रेलिया
0404 999 999
एक वैध ऑस्ट्रेलियाई संख्या है
(02) 9999 9999
एक वैध ऑस्ट्रेलियाई नंबर भी है
(09) 9999 9999
है कोई मान्य नहीं ऑस्ट्रेलियाई संख्या
फ़ोन नंबर के प्रारूप की जाँच के लिए एक नियमित अभिव्यक्ति ठीक है, लेकिन यह वास्तव में फ़ोन नंबर की वैधता की जांच करने में सक्षम नहीं है ।
मैं सुझाव दूंगा कि आप अपने फोन नंबर के खिलाफ, और Google की लाइब्रेरी libphonenumber
(GitHit प्रोजेक्ट से लिंक) का उपयोग करके एक साधारण नियमित अभिव्यक्ति को छोड़ दें ।
पेश है लिबफोनेनंबर!
आपके अधिक जटिल उदाहरणों में से एक का उपयोग करते हुए 1-234-567-8901 x1234
, आपको निम्न डेटा libphonenumber
(ऑनलाइन डेमो से लिंक) मिलता है :
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results:
E164 format +12345678901
Original format (234) 567-8901 ext. 123
National format (234) 567-8901 ext. 123
International format +1 234-567-8901 ext. 123
Out-of-country format from US 1 (234) 567-8901 ext. 123
Out-of-country format from CH 00 1 234-567-8901 ext. 123
तो न केवल आप सीखते हैं कि क्या फोन नंबर वैध है (जो कि यह है), लेकिन आपको अपने लोकेल में लगातार फोन नंबर फॉर्मेटिंग भी मिलती है।
एक बोनस के रूप में, libphonenumber
फोन नंबर की वैधता की जांच करने के लिए कई डेटासेट हैं, साथ ही एक नंबर की जाँच जैसे कि +61299999999
(अंतरराष्ट्रीय संस्करण (02) 9999 9999
) फॉर्मेटिंग के साथ एक वैध संख्या के रूप में देता है:
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results
E164 format +61299999999
Original format 61 2 9999 9999
National format (02) 9999 9999
International format +61 2 9999 9999
Out-of-country format from US 011 61 2 9999 9999
Out-of-country format from CH 00 61 2 9999 9999
libphonenumber आपको कई अतिरिक्त लाभ भी प्रदान करता है, जैसे कि फ़ोन नंबर का पता लगाने के स्थान को हथियाना, और फ़ोन नंबर से समय क्षेत्र की जानकारी प्राप्त करना:
PhoneNumberOfflineGeocoder Results
Location Australia
PhoneNumberToTimeZonesMapper Results
Time zone(s) [Australia/Sydney]
लेकिन अवैध ऑस्ट्रेलियाई फोन नंबर ( (09) 9999 9999
) यह बताता है कि यह वैध फोन नंबर नहीं है।
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() false
Google के संस्करण में जावा और जावास्क्रिप्ट के लिए कोड है, लेकिन लोगों ने अन्य भाषाओं के लिए पुस्तकालयों को भी लागू किया है जो Google i18n नंबर नंबर का उपयोग करते हैं:
जब तक आप निश्चित नहीं होते हैं कि आप हमेशा एक स्थान से संख्याओं को स्वीकार करते जा रहे हैं, और वे हमेशा एक प्रारूप में रहने वाले हैं, तो मैं आपको इसके लिए अपना स्वयं का कोड नहीं लिखने का सुझाव दूंगा, और फोन नंबर मान्य करने और प्रदर्शित करने के लिए libphonenumber का उपयोग करने का सुझाव दूंगा।