फ़ोन नंबर के लिए किसी विशेष पात्र को क्या अनुमति देनी चाहिए?


20

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

मेरे द्वारा देखे जा सकने वाले कुछ मान्य प्रारूप इस प्रकार हैं:

  1. 1800123456 (भारत)
  2. अमेरिकी फोन नंबर में "-" का उपयोग

मैं इस बात को लेकर थोड़ा उलझन में हूं कि मुझे कौन से विशेष पात्रों को उपयोगकर्ता को प्रवेश करने की अनुमति देनी चाहिए (जैसे। - / ())। अतीत में दूसरों ने इसे कैसे हल किया है?


1
अक्षरों के साथ व्यक्त किए गए फोन नंबरों के बारे में क्या है, उदाहरण के लिए, 0800DIALTHIS?
मौविइल

3
आप क्या रोकने की कोशिश कर रहे हैं? उपयोगकर्ता झूठ बोल रहा है? उपयोगकर्ता नहीं चाहते कि आप उनकी संख्या जानें? उपयोगकर्ता कुछ भी दर्ज करने के लिए बहुत आलसी हो रहा है? उपयोगकर्ता एक टाइपो कर रहा है?
बेंजोल

@ mouviviel: हाँ, मुझे भी इस बारे में सोचने की ज़रूरत है कि मैं एक बार में एक मान्यता परिदृश्य ले रहा हूं, इसलिए मैं इसके बारे में सोचूंगा।
रेंजर

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

5
आप उनके ईमेल पते को मान्य करने के लिए क्या कर रहे हैं? आप देखेंगे कि लगभग सभी वेबसाइटें "वास्तविक जीवन" सत्यापन करती हैं (यानी आपको एक मेल भेजती हैं)। मुझे लगता है कि यदि फोन नंबर इतना महत्वपूर्ण है, तो आपको कुछ समकक्ष करने की आवश्यकता होगी।
बेंजोल

जवाबों:


21

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

किसी संख्या को मान्य करने का क्या मतलब है? क्यों उपयोगी है? यदि कोई उपयोगकर्ता "0800DIALTHIS", या "は if 電話 user user user user user user user", या "(499) 123-45-67 дооавочный 4425" में प्रवेश करता है तो क्या यह विफल होगा? यह निश्चित रूप से (आप "वैश्विक" कहेंगे? क्या आप नहीं?), जबकि उपयोगकर्ता आपको केवल फोन पर संपर्क करने के तरीके के बारे में जानकारी का एक महत्वपूर्ण टुकड़ा देना चाहते थे।

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


7
+1 के लिए "उपयोगकर्ता केवल आपको जानकारी का एक महत्वपूर्ण टुकड़ा देना चाहते थे"। मैंने अक्सर अनावश्यक सत्यापन देखा है जो उपयोगकर्ता को किसी भी वास्तविक तकनीकी (या संगठनात्मक) आवश्यकताओं के बिना परेशान करता है।
पेरिडियन

6
+1 - फ़ोन नंबर सत्यापन (विशेष रूप से इसे मोटे तौर पर परिभाषित) अक्सर व्यर्थ होता है, न कि भविष्य-प्रूफ (KL5-6743 एक वैध फोन नंबर हुआ करता था, उदाहरण के लिए), और केवल उन उपयोगकर्ताओं को एनाउंस करता है जिनके पास विशेष मामले हैं। आपको फ़ोन नंबर को एक बड़ा टेक्स्ट फ़ील्ड बनाते हैं और स्वचालित डायलर (यदि इस परिदृश्य में कोई भी हैं) पार्स करें तो वे क्या कर सकते हैं। अपवाद उन मनुष्यों के लिए उठाए जा सकते हैं जो उचित रूप से स्थिति को संभाल सकते हैं।
ईज़ी हार्ट

8
+1 और सबसे महत्वपूर्ण बात यह है कि एक फोन नंबर वैध होने के कारण इसका मतलब यह नहीं है कि यह मौजूद है, और यहां तक ​​कि अगर यह मौजूद है, इसका मतलब यह नहीं है कि यह प्रश्न में व्यक्ति से संबंधित है ...
बेंजोल

ओह, मैं उन देशों का पता लगाऊंगा जहां हमारे प्रमुख उपयोगकर्ता रहते हैं और फिर मैं कुछ सत्यापन कोड लिखूंगा। धन्यवाद सभी, मैं आपके प्रयासों का मूल्यांकन करता हूं।
रेंजर

4
@ रेंजर जो जवाब मिल रहा था उसके ठीक विपरीत है।
सेबेस्टियन रेडल

7

यह जानना बहुत मुश्किल होगा कि कोई संख्या वैध है या नहीं, क्योंकि विभिन्न देशों के अलग-अलग प्रारूप हैं। उदाहरण के लिए, फ्रांस में, ०६ १२ ३४ ५६ is is एक वैध फोन नंबर है, जबकि ०० १२ ३४ ५६ for for नहीं है, क्योंकि यह संख्या केवल ०१ से ० ९, ०६ और ० 07 मोबाइल फोन से शुरू हो सकती है।

साथ ही, फोन नंबर एक ही देश में भी कई प्रारूपों में लिखे जा सकते हैं। मैंने देखा है:

  • 06 12 34 56 78
  • 0612345678
  • 06.12.34.56.78
  • 06-12-34-56-78
  • +33612345678
  • +33 (0) 6 12 34 56 78

अंतिम दो अंतर्राष्ट्रीय रूप हैं।

सामान्य रूप में:

  1. कोष्ठक, +प्रतीक केवल एक अग्रणी चरित्र, डैश, डॉट्स, कॉमा और रिक्त स्थान की अनुमति दें ।
  2. यदि संभव हो, तो केवल सामान्यीकृत फॉर्म (यानी +33 (0) 612345678) को याद रखें।
  3. यदि यह संभव नहीं है, तो कम से कम विभाजक पात्रों (जैसे रिक्त स्थान) को हटा दें।

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

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


1
यह आपके उदाहरणों में कोष्ठक के उपयोग को दिखाने में मदद करेगा। अंतर्राष्ट्रीय संख्याएं अक्सर उन्हें यह बताने के लिए क्षेत्र कोड के अग्रणी शून्य को घेरने के लिए उपयोग करती हैं कि आप विदेश से कॉल करते समय इसे डायल नहीं करते हैं। उदा +31 (0)30 1234567जहां 31 नीदरलैंड है, 030 क्षेत्र कोड है और 1234567 ग्राहक है।
मार्जन वेनेमा

2
एक्सटेंशन कोड के लिए एक वैकल्पिक फ़ील्ड मत भूलना (जिसे पाउंड या तारांकन कुंजी की अनुमति देने की आवश्यकता हो सकती है)।
rwong

@MarjanVenema, मैं ज्यादा अंतर्राष्ट्रीय डायलिंग नहीं करता, लेकिन यह शून्य को जोड़ने के लिए मानक है, और आपको इसे डायल न करने के लिए कहने के लिए कोष्ठक (0) को जोड़ना है? क्या केवल 0 को पूरी तरह से छोड़ देना सरल नहीं होगा?
कैफीक

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

@MarjanVenema, ओह, मैं देख रहा हूँ, यह महसूस नहीं किया कि राष्ट्रीय उपयोगकर्ताओं को इसकी आवश्यकता है, आज कुछ नया सीखा है।
19

3

पात्रों को प्रतिबंधित न करें; सब कुछ वह तुम्हें दे। लेकिन जब आप इसे डायल करते हैं, तो केवल अंक लेते हैं। तब भी यह गलत हो सकता है। एक साल पहले मैं थाईलैंड में था जब मुझे पता चला कि 123-4567-9 का मतलब विस्तार नहीं था, लेकिन संख्या, 1234567 1234569 के माध्यम से। जब मैंने "12345679" डायल किया तो यह काम किया, क्योंकि फोन कंपनी ने अतिरिक्त अंक को नजरअंदाज कर दिया। कुछ भी लें, केवल अंक डायल करें।

मुझे यह पसंद है कि मेरा नया फोन फोन नंबर में स्थान की अनुमति देता है। मैं "123 456 7890" को ऐसे ही दर्ज कर सकता हूं, जैसे सभी एक साथ नहीं होते।


2
+100। कंप्यूटर को "नंबर से - कृपया हटाएं" कहने की तुलना में कुछ भी बुरा नहीं है, जैसे कि कंप्यूटर का कोई सुराग नहीं है कि यह कैसे करना है। क्रेडिट कार्ड नंबर, FWIW के लिए भी।
ब्रायन ओकले

0

ब्रैकेट, डैश और स्पेस।

एक बार जब उपयोगकर्ता उन प्रतीकों वाले फोन नंबर दर्ज कर लेता है, तो आप उन्हें देश-विशिष्ट नियमों (जो आपको प्रत्येक देश के लिए उन नियमों को इकट्ठा करने की आवश्यकता होगी) के अनुसार मान्य कर सकते हैं, और फिर गैर-अंकों को वास्तव में गिराया जा सकता है जब यह आपके सॉफ़्टवेयर में आंतरिक रूप से संसाधित होता है।

ऐसा इसलिए है क्योंकि IDD (अंतर्राष्ट्रीय प्रत्यक्ष डायलिंग) किसी भी "विशेष वर्ण" की आवश्यकता को असंभव बनाता है ताकि अंकों को छिद्रित करने में ठहराव के अपवाद के साथ, किसी नंबर को डायल करने में उपयोग किया जा सके।

(मैं इसमें बिल्कुल भी जानकार नहीं हूँ; अगर मैं गलत हूँ तो कृपया मुझे सुधारें।)


3
आप अंतर्राष्ट्रीय पहुँच के लिए \ + चिन्ह को भूल रहे हैं
मार्जन वेनमा

2
अक्षर x को भी अनुमति दें - कम से कम अमेरिका में किसी एक्स के साथ एक्सटेंशन को उपसर्ग करना आम है (उदाहरण: 555-1212 x123)।
ब्रायन ओकले

0

केवल एक चीज जिसे मान्य किया जाना चाहिए वह है अंकों की संख्या - क्या यह मेल खाता है कि आपको कॉल करने की आवश्यकता क्या है?

एक्सेस कोड को एक उपयोगकर्ता (यूएस के लिए +1) द्वारा दर्ज करने की अनुमति नहीं दी जा सकती / नहीं दी जानी चाहिए। मैं आपको बताऊंगा कि क्यों - यदि यह एक अमेरिकी है जो इसमें प्रवेश कर रहा है, और वे सभी उस प्रेमी नहीं हैं, तो वे शायद 1.1 के बजाय 001 दर्ज करना चाहेंगे। कारण यह है कि 00 आप अमेरिका के भीतर से एक अंतर्राष्ट्रीय नंबर का उपयोग कैसे करते हैं। वे नहीं जानते कि क्या अंतर है और सिर्फ +1। यदि आप क्षेत्र कोड (और कभी-कभी एक ही क्षेत्र कोड में) के बीच लैंडलाइन कॉल कर रहे हैं, तो आप उस नंबर से पहले भी 1 दर्ज करेंगे। बिल्कुल जापान की तरह।

जापान को लीजिए। प्रांतीय भूमि रेखाएं उनके सामने की तरफ 0 से पहुंचती हैं। लेकिन अगर आप जापान के बाहर से डायल कर रहे हैं, तो आपको उस 0 की आवश्यकता नहीं है।

चीन में मोबाइल नंबर 10 अंकों के हैं और हांगकांग में वे 8. हैं। यदि आपका फॉर्म देश को कैप्चर करता है, तो नंबर की शुरुआत में कंट्री कोड भी न पूछें - बस इसे ऑटो-शो में केवल अगले पाठ में दिखाएं उन्हें जिस नंबर को दर्ज करना है।

सूची चलती जाती है।

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

अंकों के अलावा हर दूसरे चरित्र को, फिर एक बिंदु होना चाहिए - उनके पास उन्हें दर्ज करने का मौका नहीं है।


1
मैं यह सुनिश्चित करने के लिए सहमत नहीं हूं कि कोई पत्र स्वीकार नहीं किया जाता है - आगे बढ़ो और स्वीकार करें, फिर उन्हें अनदेखा करें। लोग स्वाभाविक रूप से एक प्रमुख "x" के साथ एक्सटेंशन लिखते हैं (उदाहरण के लिए: 555-1212 x123)। क्यों नहीं होने दिया? मनुष्य इसे ठीक-ठीक बता सकता है, और यदि कंप्यूटर को इसका उपयोग करने की आवश्यकता है, तो यह गैर-अंकों को तुच्छ रूप से छीन सकता है।
ब्रायन ओकली

0

Google के पास इसके लिए दायित्व है:

Google के सामान्य जावा, C ++ और जावास्क्रिप्ट लाइब्रेरी में पार्सिंग, स्वरूपण और अंतर्राष्ट्रीय फोन नंबरों को मान्य करने के लिए।

https://github.com/googlei18n/libphonenumber

यह सबसे अच्छा प्रयास करता है, मुझे लगता है कि ऐसे मामले होने चाहिए जो किसी भी तरह से निपटे नहीं हैं क्योंकि यह आसान काम नहीं है। उपयोगकर्ताओं को इनपुट नंबर और पत्र दें, बाद में कोड के साथ पत्र हटा दें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.