मुझे एक अंतरराष्ट्रीय फोन नंबर के उपयोगकर्ता इनपुट को मान्य करने की आवश्यकता है। E.164 के अनुसार , अधिकतम लंबाई 15 अंक है, लेकिन मुझे न्यूनतम के बारे में कोई जानकारी नहीं मिल पा रही थी। मैं केवल अंकों को मानता हूं, कोई प्लस चिह्न या विभाजक नहीं।
मुझे एक अंतरराष्ट्रीय फोन नंबर के उपयोगकर्ता इनपुट को मान्य करने की आवश्यकता है। E.164 के अनुसार , अधिकतम लंबाई 15 अंक है, लेकिन मुझे न्यूनतम के बारे में कोई जानकारी नहीं मिल पा रही थी। मैं केवल अंकों को मानता हूं, कोई प्लस चिह्न या विभाजक नहीं।
जवाबों:
विभिन्न स्रोतों के अनुसार, मुझे लगता है कि E-164 प्रारूप में न्यूनतम लंबाई एक देश से दूसरे देश पर निर्भर करती है। उदाहरण के लिए:
स्वीडन के लिए : न्यूनतम संख्या की लंबाई (देश कोड को छोड़कर) 7 अंक है। - आधिकारिक स्रोत (देश कोड 46)
सोलोमन द्वीप के लिए फिक्स्ड लाइन फोन के लिए इसके 5। - स्रोत (देश कोड 677)
... और इसी तरह। इसलिए देश कोड सहित, न्यूनतम लंबाई स्वीडन के लिए 9 अंक और इजरायल के लिए 11 और सोलोमन द्वीप के लिए 8 अंक है।
संपादित करें (क्लीन सॉल्यूशन) : दरअसल, लंबाई आदि की अलग-अलग जांच करके एक अंतरराष्ट्रीय फोन नंबर को मान्य करने के बजाय, आप Google की लिबफ़ोनोम्बर लाइब्रेरी का उपयोग कर सकते हैं । यह E164 प्रारूप में सीधे फोन नंबर को मान्य कर सकता है। यह सब कुछ ध्यान में रखेगा और आपको देश को देने की आवश्यकता नहीं है यदि संख्या वैध E164 प्रारूप में है। यह बहुत अच्छा है! एक उदाहरण लेते हुए:
String phoneNumberE164Format = "+14167129018"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, null);
boolean isValid = phoneUtil.isValidNumber(phoneNumberProto); // returns true if valid
if (isValid) {
// Actions to perform if the number is valid
} else {
// Do necessary actions if its not valid
}
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
यदि आप उस देश को जानते हैं जिसके लिए आप संख्याओं को मान्य कर रहे हैं, तो आपको E164 प्रारूप की भी आवश्यकता नहीं है और देश .parse
को पारित होने के बजाय कार्य में निर्दिष्ट कर सकता है null
।
getPhoneType
लगता है कि यूएएन वापस आ गया। तो यह 2222 नंबर UAN है। लेकिन यूनिवर्सल एक्सेस नंबर भी लंबे हो सकते हैं। तकनीकी रूप से यह मान्य संख्या लगती है। तो या तो आप अपने नंबर पर फोन नंबर टाइप कर सकते हैं या न्यूनतम लंबाई देख सकते हैं।
EDIT 2015-06-27: न्यूनतम वास्तव में देश कोड सहित 8 है। मेरी गलती।
मूल पोस्ट
मेरे द्वारा उपयोग किया जाने वाला न्यूनतम फ़ोन नंबर 10 अंकों का है। अंतर्राष्ट्रीय उपयोगकर्ताओं को हमेशा अपना देश कोड डालना चाहिए, और जहां तक मुझे पता है कि यदि आप देश कोड की गणना करते हैं तो दस अंकों से कम वाले देश नहीं हैं।
अधिक जानकारी यहाँ: https://en.wikipedia.org/wiki/Telephone_numbering_plan
सेंट हेलेना के लिए न्यूनतम लंबाई 4 है (प्रारूप: +290 XXXX) और नीयू (प्रारूप: +683 XXXX)।