क्या नियमित अभिव्यक्ति वैध अंतरराष्ट्रीय फोन नंबर से मेल खाएगी?


113

मुझे यह निर्धारित करने की आवश्यकता है कि फोन नंबर डायल करने के प्रयास से पहले वैध है या नहीं। फोन कॉल दुनिया में कहीं भी जा सकता है।

क्या नियमित अभिव्यक्ति वैध अंतरराष्ट्रीय फोन नंबर से मेल खाएगी?


कोई भी रेगेक्स त्रुटियों को सेवा संख्या से बाहर कैसे संभालता है? जैसे ही आप अन्य त्रुटियाँ करेंगे, अवैध कॉलिंग को संभालने और संभालने का प्रयास करें।

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

1
LOL @ paxdiablo .... मुझे लगता है 1-800-CALL-HELP आपके RegExp टेस्ट को पास करेगा ... lol
Buhake Sindi

1
इस प्रश्न में कुछ स्पष्ट नहीं है कि यदि संख्याओं को अमेरिका या दुनिया के किसी भी देश से कहा जाए तो मान्य होना चाहिए, क्योंकि नीचे दिए गए अधिकांश समाधान कुछ मान्य संख्याओं को मान्य नहीं करते हैं (जैसे 0030 210 12312312 - एक वैध किसी भी यूरोपीय संघ के देश से कहा जाने वाला ग्रीक नंबर)
ज़ेरॉक्सॉइड

1
@JonHanna मैं एक बिंदु से सहमत हूं, लेकिन दूसरी ओर, UX के नजरिए से आपको नहीं लगता कि यदि कोई उपयोगकर्ता 00XX ... X नंबर, परीक्षण पास करता है? ऐसे मामले हैं जहां उपयोगकर्ता (यानी बड़े लोग) यह भी नहीं जानते कि + क्या है और इसे संख्यात्मक / फोन कीपैड पर कैसे टाइप किया जाए। इसके अलावा, मैं अभी भी तर्क दे सकता हूं कि 00XXX एक वैध अंतरराष्ट्रीय संख्या है (यानी एक उपयोगकर्ता के संदर्भ में) जहां + के बजाय, बाहर निकलने के कोड का उपयोग किया गया था।
ज़ेरॉक्सॉइड

जवाबों:


96
\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$

एक सामान्य अंतरराष्ट्रीय फोन नंबर के मिलान के लिए सही प्रारूप है। मैंने यूएस लैंड लाइन केंद्रित अंतरराष्ट्रीय एक्सेस कोड 011 को '+' के मानक अंतरराष्ट्रीय एक्सेस कोड पहचानकर्ता के साथ बदल दिया, जिससे यह अनिवार्य हो गया। मैंने राष्ट्रीय संख्या के लिए न्यूनतम को भी कम से कम एक अंक में बदल दिया।

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

ध्यान दें कि यह राष्ट्रीय संख्या योजना नियमों को ध्यान में नहीं रखता है - विशेष रूप से, यह उन स्थानों में शून्य और लोगों को अनुमति देता है जो राष्ट्रीय संख्या योजना की अनुमति नहीं दे सकते हैं और कुछ देशों (जैसे, अमेरिका) के लिए राष्ट्रीय संख्या योजना से अधिक संख्या की अनुमति देता है।


5
मुझे समझदार लगता है। मैं इस एक का उपयोग करने जा रहा हूँ
सात

17
यह मान्य नहीं है। यूरोपीय फोन नंबर शुरुआत में बिना + के दोहरे 0 से शुरू हो सकते हैं। इस प्रकार एक फ़ोन नंबर जैसे: +44 8984 1234 (यूके) भी पूरी तरह से वैध है यदि लिखित रूप में 0044 8984 1234 जो इस regexp (और अन्य उत्तरों पर भी) का समर्थन नहीं करता है।
ज़ेरॉक्सॉइड

4
@ Fezfox के सुधार (?) और लंबाई अनुकूलित के साथ संयुक्त:^\+((?:9[679]|8[035789]|6[789]|5[90]|42|3[578]|2[1-689])|9[0-58]|8[1246]|6[0-6]|5[1-8]|4[013-9]|3[0-469]|2[70]|7|1)(?:\W*\d){0,13}\d$
SamWhan

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

1
और यह भी, पूर्व-धार (सादे जीएसएम) एसएमएस के "पुराने" दिनों में, 00संदेश का उपयोग सही तरीके से नहीं भेजेगा, जबकि शुरुआत +हमेशा अंतरराष्ट्रीय स्तर पर काम करेगी। हम पागल हो सकते हैं और इसे सुपर कॉम्प्लेक्स बना सकते हैं, लेकिन कभी-कभी यह संभव है / हमारे जीवन को आसान बनाने के लिए कुछ बाधाओं को छोड़ने के लायक है :)
milosmns

66

सभी देश कोड ITU द्वारा परिभाषित किए गए हैं। निम्नलिखित regex ITU-T E.164 और अनुलग्नक से ITU ऑपरेशनल बुलेटिन नंबर 930 - 15.IV.2009 पर आधारित है । इसमें सभी वर्तमान देश कोड और कोड भविष्य के उपयोग के लिए आरक्षित हैं। हालांकि इसे थोड़ा छोटा किया जा सकता है, मैंने प्रत्येक कोड को स्वतंत्र रूप से शामिल करने का फैसला किया।

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

इसके अलावा, ध्यान दें कि ITU E.164 पूर्ण अंतर्राष्ट्रीय टेलीफोन नंबर की अधिकतम लंबाई को 15 अंकों तक परिभाषित करता है। इसका मतलब है कि तीन अंकों वाले देश कोड में 12 अतिरिक्त अंक और 1 अंक वाले देश कोड में 14 अतिरिक्त अंक हो सकते हैं। इसलिए

[0-9]{0,14}$

रेगेक्स का अंत।

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

283 | 282 | 281 | 280 | 269 | 268 | 267 | 266 | 265 | 264 | 263 | 262 | 261 | 260 | 259 | 258 | 257 | 256 | 255 | 254 | 253 | 252 | 251 | 250 | 249 | 248 | 247 | 246 | 245 | 244 | 243 | 242 | 241 | 240 | 239 | 238 | 237 | 236 | 235 | 234 | 233 | 232 | 231 | 230 | 229 | 228 | 227 | 226 | 225 | 224 | 223 | 222 | 221 | 220 | 219 | 218 | 217 | 216 | 215 | 214 | 213 | 212 | 211 | 210 | 98 | 95 | 94 | 93 | 92 | 91 | 90 | 86 | 84 | 82 | 81 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 41 | 40 | 39 | 36 | 34 | 33 | 32 | 31 | 30 | 27 | 20 | 7 | 1) [0-9] {0, 14} $


12
लगभग यह सही था ... "011" एक अंतरराष्ट्रीय कोड का हिस्सा नहीं है। यह सिर्फ एक अंतर्राष्ट्रीय कॉल करने के लिए अमेरिका में लोगों को डायल करने की आवश्यकता है। आप जिस जगह से डायल करते हैं, उसके आधार पर यह उपसर्ग बदल जाएगा ... ताकि उपसर्ग संख्या का हिस्सा न हो।
गैब्रियल मैगना

3
@gmagana - मैं अपने उत्तर में इसका उल्लेख करता हूं (पैराग्राफ 2)
Abtin Forouzandeh

1
मेरा कहना है कि यह फोन नंबर का हिस्सा नहीं है। यह कहना कि "1" अमेरिकी राष्ट्रीय लंबी दूरी की डायलिंग उपसर्ग फोन नंबर का हिस्सा है।
गैब्रियल मैगना

1
@gmagana - जब आप सही हैं कि यह फोन नंबर का हिस्सा नहीं है, तो कॉल करने के लिए तकनीकी रूप से आवश्यक है।
एबटीन फ़ोरोज़ंडेह

2
@ रॉगर पटे: मैंने यह पता लगाने में थोड़ा समय बिताया और मुझे उम्मीद है कि यह दूसरों के लिए उपयोगी होगा। मुझे यह भी उम्मीद थी कि किसी और के पास एक बेहतर समाधान हो सकता है (यही वजह है कि मैंने अपना खुद का जवाब स्वीकार नहीं किया है)।
अबतिन फोर्जन्देह

32

यह एक और अनुकूलन है।

\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)
\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*(\d{1,2})$

(i) मान्य अंतर्राष्ट्रीय उपसर्गों
(ii) के बाद 9 या 10 अंकों के साथ, किसी भी प्रकार या परिधि के साथ रखने की अनुमति देता है (अंतिम दो अंकों के बीच)

यह मेल खाएगा:
+ 1-234-567-8901
+ 61-234-567-89-01
+ 46-234 5678901
+1 (234) 56 89 901
+1 (234) 56-89 901 +
46.234.567.89%
+1 / 234/567/8901


मुझे पता है कि यह एक पुराना उत्तर है, लेकिन क्या अमेरिकी नंबर के लिए 1 वैकल्पिक बनाने का कोई विकल्प है?
एडम फ्रेटिनो

आप जो करना चाहते हैं, वह है (i) "+" वैकल्पिक और (ii) अंतर्राष्ट्रीय कोड को वैकल्पिक बनाना। तो जगह "?" + के बाद और पहले करीबी ब्रैकेट के बाद।
fezfox

@ManosPasgiannis अच्छी तरह से हाँ, जैसा कि निर्दिष्ट "9 या 10 अंकों के बाद"। यह आपके द्वारा 8 उपयोग किए जाने वाले साइप्रस में दिखाई देगा, इसलिए केवल \
_

22

आप Google से लाइब्रेरी लिबफोनेनंबर का उपयोग कर सकते हैं ।

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
String decodedNumber = null;
PhoneNumber number;
    try {
        number = phoneNumberUtil.parse(encodedHeader, null);
        decodedNumber = phoneNumberUtil.format(number, PhoneNumberFormat.E164);
    } catch (NumberParseException e) {
        e.printStackTrace();
    }

2
यह एक अच्छा समाधान हो सकता है लेकिन सिर्फ फोन नंबर की जांच करने के लिए, इस पुस्तकालय का उपयोग करने से पहले, आपको भारी मात्रा में js आयात करना होगा ... क्योंकि libphonenumber.js को पुस्तकालय बंद करने की आवश्यकता है ... यह एक प्रकाश समाधान नहीं है: /
जे।

11

यह अंतरराष्ट्रीय नंबरों के लिए काम करेगा;

सी#:

@"^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$"

जे एस:

/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/

11

मैं इस एक का उपयोग करें:

/([0-9\s\-]{7,})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/

फायदे: + या 011 शुरुआत को पहचानता है, इसे आवश्यकतानुसार लंबे समय तक रहने देता है, और कई विस्तार सम्मेलनों को संभालता है। (#, एक्स, ext, विस्तार)


यह सबसे अंतरराष्ट्रीय फोन नंबर प्रारूपों के बहुत करीब आता है।
परेला

9

यहाँ आपके regex का "अनुकूलित" संस्करण है:

^011(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)\d{0,14}$

आप बदल सकते हैं \dके साथ [0-9]करता है, तो अपने रेगुलर एक्सप्रेशन से वाक्य रचना का समर्थन नहीं करता \d



6

संशोधित @ एरिक की नियमित अभिव्यक्ति - सभी देश कोडों की एक सूची जोड़ दी (उन्हें xxxdepy @ Github से मिला है । मुझे आशा है कि आप इसे उपयोगी पाएंगे:

/(\+|00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d{4,20}$/

एक जादू की तरह काम करता है। डच फोन नंबर के लिए भी। धन्यवाद!
मौवम

2

स्पष्ट रूप से ऐसा करने के तरीकों की एक भीड़ है, जैसा कि इस प्रकार अब तक दिए गए सभी अलग-अलग उत्तरों से स्पष्ट है, लेकिन मैं अपनी $ 0.02 की कीमत यहां फेंकूंगा और नीचे regex प्रदान करूंगा, जो उपरोक्त सभी की तुलना में थोड़ा अधिक है। , लेकिन अधिक से अधिक पूरी तरह से। यह $ 1 में देश कोड छोड़ने और $ 2 में स्थानीय संख्या का अच्छा साइड-इफेक्ट भी है।

^ \ + (? = \ घ {5,15} $) (1 | 2 [078] | 3 [0-469] | 4 [013-9] | 5 [1-8] | 6 [0-6] | 7 | 8 [1-469] | 9 [0-58] | [2-9] ..) (\ d +) $


2

उन महान जवाबों के बारे में कोई आलोचना नहीं जो मैं सिर्फ अपने व्यवस्थापक सामग्री रचनाकारों के लिए उपयोग किए जाने वाले सरल समाधान को प्रस्तुत करना चाहता हूं:

^(\+|00)[1-9][0-9 \-\(\)\.]{7,}$

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


1

यूरोपीय संख्याओं के लिए एक सरल संस्करण, जो 0034617393211 जैसी संख्याओं के साथ मेल खाता है, लेकिन 00440148417342 के रूप में लंबे भी हैं।

^0{2}[0-9]{11,}

आशा करता हूँ की ये काम करेगा :·)


1
public static boolean validateInternationalPhoneNumberFormat(String phone) {
    StringBuilder sb = new StringBuilder(200);

    // Country code
    sb.append("^(\\+{1}[\\d]{1,3})?");

    // Area code, with or without parentheses
    sb.append("([\\s])?(([\\(]{1}[\\d]{2,3}[\\)]{1}[\\s]?)|([\\d]{2,3}[\\s]?))?");

    // Phone number separator can be "-", "." or " "

    // Minimum of 5 digits (for fixed line phones in Solomon Islands)
    sb.append("\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?");

    // 4 more optional digits
    sb.append("\\d?[\\-\\.\\s]?\\d?[\\-\\.\\s]?\\d?[\\-\\.\\s]?\\d?$");

    return Pattern.compile(sb.toString()).matcher(phone).find();
}

1
हालांकि यह कोड स्निपेट सवाल का जवाब दे सकता है, यह कैसे या क्यों की व्याख्या करने के लिए कोई संदर्भ प्रदान नहीं करता है। अपना उत्तर समझाने के लिए एक वाक्य या दो जोड़ने पर विचार करें।
ब्राण्डकस्क्रिप्ट

1

यहाँ निम्नलिखित सबसे सामान्य फ़ोन नंबर परिदृश्यों के लिए एक regex है। हालांकि यह क्षेत्र के कोड के लिए एक अमेरिकी दृष्टिकोण से सिलवाया गया है जो अंतरराष्ट्रीय परिदृश्यों के लिए काम करता है।

  1. वास्तविक संख्या केवल 10 अंकों की होनी चाहिए।
  2. यूएस नंबर के लिए क्षेत्र कोड कोष्ठक () से घिरा हो सकता है।
  3. देश का कोड 1 से 3 अंक लंबा हो सकता है। वैकल्पिक रूप से एक + संकेत द्वारा पूर्ववर्ती हो सकता है।
  4. देश कोड, क्षेत्र कोड और शेष संख्या के बीच डैश, रिक्त स्थान, बिंदु या कोई स्थान नहीं हो सकता है।
  5. एक मान्य फ़ोन नंबर सभी शून्य नहीं हो सकता।

    ^(?!\b(0)\1+\b)(\+?\d{1,3}[. -]?)?\(?\d{3}\)?([. -]?)\d{3}\3\d{4}$

स्पष्टीकरण:

    ^ - start of expression  
    (?!\b(0)\1+\b) - (?!)Negative Look ahead. \b - word boundary around a '0' character. \1 backtrack to previous capturing group (zero). Basically don't match all zeros.  
    (\+?\d{1,3}[. -]?)? - '\+?' plus sign before country code is optional.\d{1,3} - country code can be 1 to 3 digits long. '[. -]?' - spaces,dots and dashes are optional. The last question mark is to make country code optional.  
    \(?\d{3}\)? - '\)?' is to make parentheses optional. \d{3} - match 3 digit area code.  
    ([. -]?) - optional space, dash or dot
    $ - end of expression

अधिक उदाहरण और स्पष्टीकरण - https://regex101.com/r/hTH8Ct/2/


1

मैंने इसे नीचे इस्तेमाल किया है:

^(\+|00)[0-9]{1,3}[0-9]{4,14}(?:x.+)?$

प्रारूप + CCC.NNNNNNNNNNxEEEE या 00CCC.NNNNNNNNNNEE

अंतर्राष्ट्रीय कॉल के लिए फ़ोन नंबर '+' या '00' से शुरू होना चाहिए। जहां C 1–3 अंकों वाला देश कोड है,

N 14 अंक तक है,

और E एक वैकल्पिक (वैकल्पिक) विस्तार है।

देश के कोड का अनुसरण करने वाले प्रमुख धन चिह्न और बिंदु की आवश्यकता है। यदि एक्सटेंशन प्रदान किया गया है, तो शाब्दिक "x" वर्ण आवश्यक है।



0

अंतर्राष्ट्रीय नंबरिंग योजना ITU E.164 नंबरिंग योजना पर आधारित है । मुझे लगता है कि यह आपकी नियमित अभिव्यक्ति का शुरुआती बिंदु है।

अगर मैं ITU E.164 नंबरिंग के आधार पर एक नियमित अभिव्यक्ति बनाने के लिए चारों ओर मिलता हूं तो मैं इसे अपडेट करूंगा।


0

यह रेगेक्स एक्सप्रेशन भारत, कनाडा, यूरोप, न्यूजीलैंड, ऑस्ट्रेलिया, संयुक्त राज्य अमेरिका के फोन नंबर के साथ-साथ उनके देश कोड के लिए भी काम करता है:

"^(\+(([0-9]){1,2})[-.])?((((([0-9]){2,3})[-.]){1,2}([0-9]{4,10}))|([0-9]{10}))$"


0

यह मेरे लिए काम करता है, बिना 00, 001, 0011 आदि के उपसर्ग हालांकि:

/^\+*(\d{3})*[0-9,\-]{8,}/



0

मैंने यूरोपीय फोन नंबरों के लिए regexp बनाया, और यह डायल उपसर्ग बनाम संख्या की लंबाई के खिलाफ विशिष्ट है।

const PhoneEuropeRegExp = () => {
    // eu phones map https://en.wikipedia.org/wiki/Telephone_numbers_in_Europe
    const phonesMap = {
        "43": [4, 13],
        "32": [8, 10],
        "359": [7, 9],
        "385": [8, 9],
        "357": 8,
        "420": 9,
        "45": 8,
        "372": 7,
        "358": [5, 12],
        "33": 9,
        "350": 8,
        "49": [3, 12],
        "30": 10,
        "36": [8, 9],
        "354": [7, 9],
        "353": [7, 9],
        "39": [6, 12],
        "371": 8,
        "423": [7, 12],
        "370": 8,
        "352": 8,
        "356": 8,
        "31": 9,
        "47": [4, 12],
        "48": 9,
        "351": 9,
        "40": 9,
        "421": 9,
        "386": 8,
        "34": 9,
        "46": [6, 9],
    };
    const regExpBuilt = Object.keys(phonesMap)
        .reduce(function(prev, key) {
            const val = phonesMap[key];
            if (Array.isArray(val)) {
                prev.push("(\\+" + key + `[0-9]\{${val[0]},${val[1]}\})`);
            } else {
                prev.push("(\\+" + key + `[0-9]\{${val}\})`);
            }
            return prev;
        }, [])
        .join("|");
    return new RegExp(`^(${regExpBuilt})$`);
};

alert(PhoneEuropeRegExp().test("+420123456789"))

-4

यह कोशिश करो, मुझे नहीं पता कि 12 से अधिक कोई फोन नंबर है:

^(00|\+){1}\d{12}$

1
यह उन संख्याओं से मेल खाता है जिनके देश कोड सहित ठीक 12 अंक हैं। यह गलत है क्योंकि यह दुनिया भर में लंबाई परिवर्तनशीलता के लिए जिम्मेदार नहीं है। इसके अलावा, अधिकतम लंबाई वास्तव में 15 अंक है
tmt

1
@tmt ^(00|\+){1}\d{12,15}$फिर कैसे ?
turingtested
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.