2008-08-28 20 views

उत्तर

28

स्वीकार्य उत्तर में रेगेक्स सभी मान्य यूके संख्याओं से मेल नहीं खाता है, क्योंकि यह बहुत ही सीमित है (इस बीच अतिरिक्त संख्या सीमाएं खोली गई हैं जैसे कि 0203, जिसे यह अमान्य लगता है)।

ब्रिटेन फोन नंबर काफी सरल नियमों का पालन करें:

  • वे हो सकता है या तो 10 या 11 अंक लंबा (कुछ विशेष संख्या के अपवाद के साथ, लेकिन आप उन मान्य करने के लिए की जरूरत है की संभावना नहीं कर रहे हैं)

  • इनमें एक स्थानीय कोड के बाद एक क्षेत्र कोड शामिल है। क्षेत्र कोड तीन से पांच अंकों के बीच लंबाई में भिन्न होता है, और संख्या का स्थानीय भाग 10 या 11 अंकों की शेष लंबाई लेता है। सभी व्यावहारिक उद्देश्यों के लिए, कोई भी कभी भी अपने नंबर के स्थानीय हिस्से को उद्धृत नहीं करता है, ताकि आप स्वरूपण को प्रभावित करने के अलावा अब भेद को अनदेखा कर सकें।

  • वे शून्य से शुरू होते हैं।

  • दूसरा अंक कुछ भी हो सकता है। वर्तमान में 04 या 06 के साथ कोई मान्य संख्या शुरू नहीं होती है, लेकिन भविष्य में इन श्रेणियों का उपयोग करने में कुछ भी नहीं है। (03 को हाल ही में उपयोग में लाया गया है)

  • उन्हें ब्रैकेट के सेट और रिक्त स्थान (एक या अधिक, अलग-अलग स्थितियों में) के साथ स्वरूपित किया जा सकता है, लेकिन वे सभी पूरी तरह से वैकल्पिक हैं।

इसलिए, ब्रिटेन फोन नंबर के लिए एक बुनियादी काम कर अभिव्यक्ति ऐसा दिखाई दे सकता:

/^\(?0(*\d\)?){9,10}$/ 

इस में से किसी के बीच स्वरूपण रिक्त स्थान के साथ 10 या 11 अंकों की संख्या के लिए जाँच करेगा, एक शून्य के साथ शुरू, अंक, और वैकल्पिक रूप से क्षेत्र कोड के लिए ब्रैकेट का एक सेट।

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

इस जोड़ने के लिए) वैसे मुक्त आप अतिरिक्त फ़िल्टरिंग क्या करना चाहते हैं महसूस हो रहा है, इस मामले में, आप निम्न नियमों को नोट करना चाह सकते हैं:

  • नंबर 08 शुरू, 09 और 070 विशेष मूल्य संख्याएं हैं, और आमतौर पर निजी संख्या के रूप में नहीं दी जाएंगी , यदि किसी निजी नंबर को सत्यापित करते हैं तो इसे बाहर रखा जा सकता है।

  • 07 संख्याएं मोबाइल हैं (070 को छोड़कर; ऊपर देखें) इसलिए यदि आप विशेष रूप से लैंडलाइन के लिए मान्य हैं तो इसे बाहर रखा जा सकता है।

+0

इस उत्तर के साथ शीर्ष पर! –

+0

मैं एक टिप्पणी जोड़ना चाहता हूं (विशेष रूप से 2016 में) जो एड्रेस बुक आदि से स्वत: भरना होगा, अंतरराष्ट्रीय नंबर डायलिंग कोड 44 या +44 के साथ अग्रणी नंबर को बदल देगा। मेरा regex-foo मजबूत नहीं है हालांकि इसके लिए ठीक करने के लिए अपने regex को संशोधित करने के लिए पर्याप्त है। – Jmons

संबंधित मुद्दे