मानक 10 अंकों वाले फोन नंबर से मिलान करने के लिए नियमित अभिव्यक्ति


125

मैं एक मानक यूएस प्रकार फोन नंबर के लिए एक नियमित अभिव्यक्ति लिखना चाहता हूं जो निम्नलिखित स्वरूपों का समर्थन करता है:

###-###-####
(###) ###-####
### ### ####
###.###.####

जहाँ # का मतलब किसी भी संख्या से है। अब तक मैं निम्नलिखित भाव लेकर आया हूँ

^[1-9]\d{2}-\d{3}-\d{4}
^\(\d{3}\)\s\d{3}-\d{4}
^[1-9]\d{2}\s\d{3}\s\d{4}
^[1-9]\d{2}\.\d{3}\.\d{4}

क्रमशः। यदि अंतिम बिंदीदार चेक के लिए सही है तो मुझे बिल्कुल यकीन नहीं है। मैं यह भी जानना चाहता हूं कि क्या कोई तरीका है जो मैं 4 अलग-अलग लोगों के बजाय एक एकल अभिव्यक्ति लिख सकता हूं जो मेरे द्वारा बताए गए विभिन्न स्वरूपों को पूरा करते हैं। यदि हां, तो मुझे यकीन नहीं है कि मैं ऐसा कैसे कर सकता हूं। और यह भी कि मैं अभिव्यक्ति / अभिव्यक्तियों को कैसे संशोधित करता हूं ताकि मैं वैकल्पिक घटक के रूप में क्षेत्र कोड का समर्थन करने के लिए एक शर्त भी शामिल कर सकूं। कुछ इस तरह

+1 ### ### ####

जहां +1 क्षेत्र कोड है और यह वैकल्पिक है।


5
स्टैकओवरफ़्लो का संभावित डुप्लिकेट. com/questions/123559/… सुझाव दिया गया उत्तर हर गैर-अंक वाले चरित्र को छीनना है। इस तरह, आप सत्यापन को आसान बनाते हैं
अरनौद डेनॉयले

1
मुझे पता है कि यह कुछ समय पहले था, लेकिन मुझे नहीं लगता कि अमेरिकी क्षेत्र कोड 1. (123) 456-7890 के साथ शुरू हो सकते हैं क्योंकि प्रमुख 1 के कारण अमान्य होगा।
bobanahalf

अधिक पूर्ण सही उत्तर के लिए देखें: stackoverflow.com/a/18626090/561710
जो जॉनसन

फ़ोन नंबर पार्स करना कठिन है। Google ने इसके लिए एक ओपन सोर्स लिब जारी किया। अपने आप को मदद, libphonenumber (या अपनी भाषा में एक कांटा) का उपयोग करें
aloisdg codidact.com

जवाबों:


212
^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$

निम्नलिखित से मेल खाता है

123-456-7890
(123) 456-7890
123 456 7890
123.456.7890
+91 (123) 456-7890

अगर आप नॉन-यूएस नंबरों के इस्तेमाल पर मैच नहीं चाहते हैं

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

अपडेट:
जैसा कि नीचे दिए गए उपयोगकर्ता साइमन वीवर द्वारा देखा गया है, अगर आप भी बिना किसी संख्या के मिलान के इच्छुक हैं तो विभाजक वर्ण को वैकल्पिक बनाएं[\s.-]?

^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$

1
क्या आपको लगता है कि आपकी पहली पहली पंक्ति के (? D {3}) भाग में प्रश्नचिह्न आवश्यक नहीं है? मुझे लगता है कि हमें एक या एक से अधिक घटना की आवश्यकता नहीं है और '(' और ')' के भीतर एक अंक की शून्य या एक घटना नहीं है
noobcoder

2
?कोष्ठक पर वहाँ लागू होता है ()अंक पर नहीं,। पूर्ण संबंधित रेगेक्स है \(?\d{3}\)?\d{3}निर्दिष्ट करता है कि उस के बीच तीन अंक होने चाहिए ()(बनाए गए) वैकल्पिक (द्वारा ?)।
रवि थपलियाल

6
नोट: यह 1234567890 से मेल नहीं खाता है जो एक समस्या हो सकती है या नहीं भी हो सकती है। मेरे लिए यह था - इसलिए मैंने इसे वैकल्पिक बनाने के लिए ?प्रत्येक के बाद जोड़ा[\s.-]
साइमन_वेअर

1
@Simon_Weaver आपके इनपुट के लिए धन्यवाद। मैंने आपके अवलोकन को उत्तर में जोड़ दिया है।
रवि थपलियाल

3
यदि आप एक ऐसा मुद्दा चाहते हैं जो इस मुद्दे से बचता है तो @busRay का उपयोग करें ^(\+\d{1,2}\s)?((\(\d{3}\))|(\d{3}))[\s.-]\d{3}[\s.-]\d{4}$। (मैं मूल रूप से सिर्फ RegEx के क्षेत्र को दोहराता हूं जो क्षेत्र कोड को कवर करता है और एक संस्करण को बिना और एक के साथ अनुमति देता है)
श्रेय गुप्ता

128

इस समस्या के लिए कई विविधताएँ संभव हैं। यहाँ एक उत्तर के समान एक नियमित अभिव्यक्ति है जिसे मैंने पहले SO पर रखा था।

^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$

यह निम्नलिखित उदाहरणों से मेल खाएगा और बहुत कुछ:

18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
800 555 1234x5678
8005551234 x5678
1    800    555-1234
1----800----555-1234

फोन नंबर दर्ज करने के तरीके के बावजूद, कैप्चर समूहों का उपयोग फोन नंबर को तोड़ने के लिए किया जा सकता है ताकि आप इसे अपने कोड में संसाधित कर सकें।

  • Group1: देश कोड (उदा: 1 या 86)
  • Group2: क्षेत्र कोड (उदा: 800)
  • Group3: एक्सचेंज (उदा: 555)
  • Group4: सब्सक्राइबर नंबर (उदा: 1234)
  • Group5: एक्सटेंशन (उदा: 5678)

यदि आप रुचि रखते हैं तो यहां अभिव्यक्ति का टूटना है:

^\s*                #Line start, match any whitespaces at the beginning if any.
(?:\+?(\d{1,3}))?   #GROUP 1: The country code. Optional.
[-. (]*             #Allow certain non numeric characters that may appear between the Country Code and the Area Code.
(\d{3})             #GROUP 2: The Area Code. Required.
[-. )]*             #Allow certain non numeric characters that may appear between the Area Code and the Exchange number.
(\d{3})             #GROUP 3: The Exchange number. Required.
[-. ]*              #Allow certain non numeric characters that may appear between the Exchange number and the Subscriber number.
(\d{4})             #Group 4: The Subscriber Number. Required.
(?: *x(\d+))?       #Group 5: The Extension number. Optional.
\s*$                #Match any ending whitespaces if any and the end of string.

क्षेत्र कोड को वैकल्पिक बनाने के लिए, क्षेत्र कोड के लिए (\ d {3}) के बाद एक प्रश्न चिह्न जोड़ें।


7
सबसे अच्छा जवाब IMHO। मेरे उद्देश्य के लिए, \sशुरुआत और अंत में जरूरत नहीं है, क्योंकि मैं सत्यापन के लिए उपयोग कर रहा हूं, और क्षेत्र पहले से ही छंटनी कर रहा हूं।
डेनियल

1
अब तक का सबसे अच्छा जवाब और सबसे पूरा। मैं वास्तव में रेगेक्स टूटने की भी सराहना करता हूं।
ब्रायंट जैक्सन

@ कोंडल मैं उस इनपुट के बारे में उत्सुक हूं जिसे आप असफल बनाने के लिए उपयोग कर रहे हैं। यह देश कोड के लिए 0 के साथ मेरे लिए ठीक काम करता है।
फ्रांसिस गैग्नन

<input type = "text" name = "phone_no" class = "form-control" ng-pattern = "^ s * * (?: \ +? (\ d {1,3})]? [-] * (\ d {3}) [-।] * * (\ _ d {3}) [-।] * (\ _ d {4})? (? * * x (\ d +))? \ s * $ "? -न्यूज एनजी-मैक्सक्लोनेरी = "10" />
कोंडल

@ कोंडल सॉरी। मेरा मतलब था कि आप जिस पाठ से मेल खाने की कोशिश कर रहे हैं, वह इस रीजेक्स के साथ विफल हो रहा है।
फ्रांसिस गैगनॉन

8

^(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$

इन फ़ोन नंबरों से मेल खाता है:

1-718-444-1122
718-444-1122
(718)-444-1122
17184441122
7184441122
718.444.1122
1718.444.1122
1-123-456-7890
1 123-456-7890
1 (123) 456-7890
1 123 456 7890
1.123.456.7890
+91 (123) 456-7890
18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
18001234567
1 800 123 4567
1-800-123-4567
+18001234567
+1 800 123 4567
+1 (800) 123 4567
1(800)1234567
+1800 1234567
1.8001234567
1.800.123.4567
+1 (800) 123-4567
18001234567
1 800 123 4567
+1 800 123-4567
+86 800 123 4567
1-800-123-4567
1 (800) 123-4567
(800)123-4567
(800) 123-4567
(800)1234567
800-123-4567
800.123.4567
1231231231
123-1231231
123123-1231
123-123 1231
123 123-1231
123-123-1231
(123)123-1231
(123)123 1231
(123) 123-1231
(123) 123 1231
+99 1234567890
+991234567890
(555) 444-6789
555-444-6789
555.444.6789
555 444 6789
18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1.800.555.1234
+1.800.555.1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
(003) 555-1212
(103) 555-1212
(911) 555-1212
18005551234
1 800 555 1234
+86 800-555-1234
1 (800) 555-1234

देखें regex101.com


7

यहाँ एक काफी कॉम्पैक्ट है जिसे मैंने बनाया है।

Search: \+?1?\s*\(?-*\.*(\d{3})\)?\.*-*\s*(\d{3})\.*-*\s*(\d{4})$

Replace: +1 \($1\) $2-$3

निम्नलिखित उपयोग के मामलों के खिलाफ परीक्षण किया गया।

18001234567
1 800 123 4567
1-800-123-4567
+18001234567
+1 800 123 4567
+1 (800) 123 4567
1(800)1234567
+1800 1234567
1.8001234567
1.800.123.4567
1--800--123--4567
+1 (800) 123-4567

यह सामान की तरह मेल खाता है (800 444-4444
जेक

6

Jsfiddle पर उपर्युक्त समाधान का उपयोग करके एक उदाहरण जोड़ना। मैंने अपने ग्राहकों की आवश्यकता के अनुसार कोड को थोड़ा संशोधित किया है। आशा है कि यह भी किसी की मदद करता है।

/^\s*(?:\+?(\d{1,3}))?[- (]*(\d{3})[- )]*(\d{3})[- ]*(\d{4})(?: *[x/#]{1}(\d+))?\s*$/

यहां देखें उदाहरण


4

पाकिस्तानी उपयोगकर्ताओं के लिए इसे आज़माएं। मेरे द्वारा बनाए गए एक काफी कॉम्पैक्ट।

((\+92)|0)[.\- ]?[0-9][.\- ]?[0-9][.\- ]?[0-9]

निम्नलिखित उपयोग के मामलों के खिलाफ परीक्षण किया गया।

+92 -345 -123 -4567
+92 333 123 4567
+92 300 123 4567
+92 321 123 -4567
+92 345 - 540 - 5883

4

फ़ोन नंबर regex जो मैं उपयोग करता हूं: /^[+]?(\d{1,2})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/

कवर:

  • 18001234567
  • 1 800 123 4567
  • +1 800 123-4567
  • +86 800 123 4567
  • 1-800-123-4567
  • 1 (800) 123-4567
  • (800)123-4567
  • (800) 123-4567
  • (800) 1234567
  • 800-123-4567
  • 800.123.4567

2

1, 3 और 4 के लिए भाव काफी समान हैं, इसलिए आप इसका उपयोग कर सकते हैं:

^([1-9]\d{2})([- .])(\d{3})$2(\d{4})$

ध्यान दें कि, इस्तेमाल की गई रेगीक्स की भाषा और ब्रांड के आधार पर, आपको \2इसके बजाय डालने की आवश्यकता हो सकती है $2या इस तरह के मिलान का बिल्कुल भी समर्थन नहीं किया जा सकता है।

मैं इसे प्रारूप 2 के साथ संयोजित करने का कोई अच्छा तरीका नहीं देखता, इसके अलावा यह स्पष्ट है ^(regex for 1,3,4|regex for 2)$कि बदसूरत, अनाड़ी है और संख्याओं के हिस्सों को बाहर निकालना मुश्किल बनाता है।

क्षेत्र कोड के लिए, आप (\+\d)?शुरुआत में एकल-अंक क्षेत्र कोड (क्षमा करें, मुझे आपके कंप्यूटर कोड का प्रारूप नहीं पता है) पर कब्जा करने के लिए जोड़ सकते हैं ।


2

इस बारे में कैसा है?

^(\+?[01])?[-.\s]?\(?[1-9]\d{2}\)?[-.\s]?\d{3}[-.\s]?\d{4}

संपादित करें: मैं () के बारे में भूल गया। EDIT 2: पहले 3 अंक वाला हिस्सा गलत मिला।


.चरित्र वर्ग में होने पर डॉट से बचने की कोई आवश्यकता नहीं है , इसलिए [-\.\s]वास्तव में होना चाहिए [-.\s], क्योंकि हम बैकस्लैश का मिलान नहीं करना चाहते हैं।
वेदरन Mayego

क्या यह वास्तव में बैकस्लैश से मेल खाएगा? मैंने सोचा कि यह आवश्यक नहीं हो सकता है, लेकिन मैं 100% निश्चित नहीं था।
crimson_penguin

तुम सही हो। मैंने अभी इसकी कोशिश की है (मुझे पहले कभी बैकस्लैश की जरूरत नहीं थी) [\.]और [.]दोनों ही डॉट से मैच करते हैं, जबकि [\\.]डॉट और बैकलैश दोनों से मेल खाते हैं। आपकी टिप्पणी के लिए धन्यवाद।
वेदरन Mayego

रेगेक्स के बारे में मेरी राय यह है कि यदि आप किसी को रेगेक्स दे रहे हैं, तो उसे हमेशा स्पष्टीकरण के साथ दें, या रेगेक्स बेकार है। एकदम मेरे विचार।
जॉन लाल

2

@ रवि के उत्तर से शुरू करते हुए, मैंने NPA (क्षेत्र) कोड के लिए कुछ सत्यापन नियम भी लागू किए ।

विशेष रूप से:

  • इसे 2 (या उच्चतर) से शुरू करना चाहिए
  • यह दूसरे और तीसरे अंक (N11) के रूप में "11" नहीं हो सकता है।

आरक्षित ब्लॉक (N9X, 37X, 96X) और 555 सहित कुछ अन्य प्रतिबंध हैं, लेकिन मैंने उन लोगों को छोड़ दिया, खासकर क्योंकि आरक्षित ब्लॉक भविष्य के उपयोग को देख सकते हैं, और 555 परीक्षण के लिए उपयोगी है।

मैंने ये ढूंढ निकाला:

^((\+\d{1,2}|1)[\s.-]?)?\(?[2-9](?!11)\d{2}\)?[\s.-]?\d{3}[\s.-]?\d{4}$

वैकल्पिक रूप से, यदि आप रिक्त मानों से मेल खाना चाहते हैं (यदि फ़ील्ड आवश्यक नहीं है), तो आप उपयोग कर सकते हैं:

(^((\+\d{1,2}|1)[\s.-]?)?\(?[2-9](?!11)\d{2}\)?[\s.-]?\d{3}[\s.-]?\d{4}$|^$)

मान्य संख्याओं के लिए मेरे परीक्षण के मामले (@Francis के उत्तर से कई) हैं:

18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1.800.555.1234
+1.800.555.1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234

मेरे अमान्य परीक्षण मामलों में शामिल हैं:

(003) 555-1212     // Area code starts with 0
(103) 555-1212     // Area code starts with 1
(911) 555-1212     // Area code ends with 11
180055512345       // Too many digits
1 800 5555 1234    // Prefix code too long
+1 800 555x1234    // Invalid delimiter
+867 800 555 1234  // Country code too long
1-800-555-1234p    // Invalid character
1 (800)  555-1234  // Too many spaces
800x555x1234       // Invalid delimiter
86 800 555 1212    // Non-NA country code doesn't have +

मेरी नियमित अभिव्यक्ति में अंक समूहों को निकालने के लिए समूहन शामिल नहीं है, लेकिन इसे शामिल करने के लिए संशोधित किया जा सकता है।


2

शायद सबसे आसान एक की तुलना कई लोगों से की जाती है।

\(?\d+\)?[-.\s]?\d+[-.\s]?\d+

यह निम्नलिखित से मेल खाता है:

(555) 444-6789

555-444-6789

555.444.6789

555 444 6789


बिल्कुल सही ... धन्यवाद (y)
सुशील शर्मा

2

यह कोड अमेरिका या कनाडाई फ़ोन नंबर से मेल खाएगा, और यह भी सुनिश्चित करेगा कि यह एक मान्य क्षेत्र कोड और विनिमय है:

^((\+1)?[\s-]?)?\(?[2-9]\d\d\)?[\s-]?[2-9]\d\d[\s-]?\d\d\d\d

Regex101.com पर टेस्ट करें


2

Regex patter एक नियमित 10 अंकों वाले फ़ोन नंबर और वैकल्पिक अंतर्राष्ट्रीय कोड (1 से 3 अंक) और वैकल्पिक एक्सटेंशन नंबर (अंकों की किसी भी संख्या ) को मान्य करने के लिए :

/(\+\d{1,3}\s?)?((\(\d{3}\)\s?)|(\d{3})(\s|-?))(\d{3}(\s|-?))(\d{4})(\s?(([E|e]xt[:|.|]?)|x|X)(\s?\d+))?/g

डेमो: https://www.regextester.com/103299

मान्य प्रविष्टियाँ:

/* Full number */
+999 (999) 999-9999 Ext. 99999

/* Regular local phone number (XXX) XXX-XXXX */
1231231231
123-1231231
123123-1231
123-123 1231
123 123-1231
123-123-1231
(123)123-1231
(123)123 1231
(123) 123-1231
(123) 123 1231

/* International codes +XXX (XXX) XXX-XXXX */
+99 1234567890
+991234567890

/* Extensions (XXX) XXX-XXXX Ext. XXX... */
1234567890 Ext 1123123
1234567890Ext 1123123
1234567890 Ext1123123
1234567890Ext1123123

1234567890 Ext: 1123123
1234567890Ext: 1123123
1234567890 Ext:1123123
1234567890Ext:1123123

1234567890 Ext. 1123123
1234567890Ext. 1123123
1234567890 Ext.1123123
1234567890Ext.1123123

1234567890 ext 1123123
1234567890ext 1123123
1234567890 ext1123123
1234567890ext1123123

1234567890 ext: 1123123
1234567890ext: 1123123
1234567890 ext:1123123
1234567890ext:1123123

1234567890 X 1123123
1234567890X1123123
1234567890X 1123123
1234567890 X1123123
1234567890 x 1123123
1234567890x1123123
1234567890 x1123123
1234567890x 1123123

1

मुझे यह नियमित अभिव्यक्ति 10 अंकों की संपर्क संख्या के लिए सबसे उपयोगी लगती है:

^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$

संदर्भ : https://regex101.com/r/QeQewP/1

स्पष्टीकरण:

यहां छवि विवरण दर्ज करें


क्या आपने उस स्पष्टीकरण को उत्पन्न करने के लिए एक उपकरण का उपयोग किया था? साझा करें! धन्यवाद
unnknown

@unnogn ऑनलाइन regex चेकर से स्क्रीनशॉट की तरह दिखता है, जैसे कि regex101.com। ध्यान दें कि SO दिशानिर्देश बताता है कि सभी पाठ, कोड, डेटा, और त्रुटि संदेश पाठ रूप में इनपुट होने चाहिए, न कि चित्र, क्योंकि छवियों में पाठ को पढ़ना मुश्किल हो सकता है, विशेष रूप से मोबाइल उपकरणों पर, और अधिक बैंडविड्थ incurs। साथ ही टेक्स्ट को कॉपी-पेस्ट नहीं किया जा सकता है। इस मामले में, रंग कुछ जोड़ सकते हैं, निश्चित नहीं। पता है कि आम तौर पर, "उत्तर" में एक पाठ्य विवरण शामिल होना चाहिए। अमितेश: इस साइट के लिए एक लिंक शामिल करना उपयोगी होगा, आपके रेगेक्स आगंतुकों के लिए पहले से ही प्रयोग करने के लिए आबाद है।
शेरलहोमन

@unnogn यहां एक लिंक है जो इस पोस्ट में एक के समान एक छवि बनाता है। Amitesh का regex string पहले ही पेस्ट किया जा चुका है। आप इसके परिणाम की जांच करने के लिए फ़ोन नंबर दर्ज कर सकते हैं: regex101.com/r/QeQewP/1
शेरिलहोमन


0

यह एक अधिक व्यापक संस्करण है जो जितना मैं सोच सकता हूं, उतना ही आपको देश, क्षेत्र, प्रथम और अंतिम के लिए समूह मिलान प्रदान करेगा।

(?<number>(\+?(?<country>(\d{1,3}))(\s|-|\.)?)?(\(?(?<region>(\d{3}))\)?(\s|-|\.)?)((?<first>(\d{3}))(\s|-|\.)?)((?<last>(\d{4}))))

0

"+" के साथ कई संख्याओं के बारे में क्या है और उन्हें ";" के साथ अलग करें "," "-" या "" वर्ण?


0

मैं खत्म हो गया

const regexBase = '(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})?[-. )]*(\\d{3})[-. ]*(\\d{4,5})(?: *x(\\d+))?'; const phoneRegex = new RegExp('\\s*' + regexBase + '\\s*', 'g');

यह उदाहरण के लिए, डच नंबर जैसी चीजों के लिए अनुमति देना था

+358 300 20200


0

रेगेक्स के ऊपर एक मामूली संशोधन है @Francis Gagnon.

उद्देश्य: किसी भी संभावित पैटर्न का पता लगाने के लिए एक उपयोगकर्ता अपना यूएस फोन नंबर साझा कर सकता है


संस्करण 1:

^\s*(?:\+?(\d{1,3}))?[\W\D\s]*(\d[\W\D\s]*?\d[\D\W\s]*?\d)[\W\D\s]*(\d[\W\D\s]*?\d[\D\W\s]*?\d)[\W\D\s]*(\d[\W\D\s]*?\d[\D\W\s]*?\d[\W\D\s]*?\d)(?: *x(\d+))?\s*$

इसे यहाँ पर टेस्ट करें कोडन: https://codepen.io/kiranbhattarai/pen/NWKMXQO

रेगेक्स की व्याख्या: https://regexr.com/4kt5j


संस्करण 2:

\s*(?:\+?(\d{1,3}))?[\W\D\s]^|()*(\d[\W\D\s]*?\d[\D\W\s]*?\d)[\W\D\s]*(\d[\W\D\s]*?\d[\D\W\s]*?\d)[\W\D\s]*(\d[\W\D\s]*?\d[\D\W\s]*?\d[\W\D\s]*?\d)(?: *x(\d+))?\s*$

इसमें क्या है: परीक्षण के मामले स्ट्रिंग का एक हिस्सा हो सकते हैं। संस्करण एक में परीक्षण मामलों को काम करने के लिए एक पंक्ति की शुरुआत होनी चाहिए।

कोडपेन: https://codepen.io/kiranbhattarai/pen/GRKGNGG

रेगेक्स की व्याख्या: https://regexr.com/4kt9n


यदि आप एक पैटर्न पा सकते हैं जो विफल हो सकता है तो कृपया टिप्पणी करें मैं इसे ठीक कर दूंगा।

टेस्ट केस: पास

8 0   0  4  4  4  5   55 5
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
800 555 1234x5678
8005551234 x5678
1    800    555-1234
1----800----555-1234
800 (555) 1234
800(555)1234
8 0 0 5 5 5 1 2 3 4
8.0.0.5.5.5.1.2.3.4
8-0-0-5-5-5-1-2-3-4
(8)005551234
(80)05551234
8(00)5551234
8@0@0@5551234
8/0/0/5/5/5/1/2/3/4
8*0*0*5*5*5*1*2*3*4
8:0:0:5:5:5:1:2:3:4
8,0,0,5,5,5,1,2,3,4
800,555,1234
800:555:1234
1-718-444-1122
718-444-1122
(718)-444-1122
17184441122
7184441122
718.444.1122
1718.444.1122
1-123-456-7890
1 123-456-7890
1 (123) 456-7890
1 123 456 7890
1.123.456.7890
+91 (123) 456-7890
18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
18001234567
1 800 123 4567
1-800-123-4567
+18001234567
+1 800 123 4567
+1 (800) 123 4567
1(800)1234567
+1800 1234567
1.8001234567
1.800.123.4567
+1 (800) 123-4567
18001234567
1 800 123 4567
+1 800 123-4567
+86 800 123 4567
1-800-123-4567
1 (800) 123-4567
(800)123-4567
(800) 123-4567
(800)1234567
800-123-4567
800.123.4567
1231231231
123-1231231
123123-1231
123-123 1231
123 123-1231
123-123-1231
(123)123-1231
(123) 123-1231
(123) 123 1231
+99 1234567890
+991234567890
(555) 444-6789
555-444-6789
555.444.6789
555 444 6789
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1.800.555.1234
+1.800.555.1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234
(003) 555-1212
(103) 555-1212
(911) 555-1212
18005551234
1 800 555 1234
+86 800-555-1234
1 (800) 555-1234

+86, +99 आदि निश्चित रूप से अमेरिका के फोन नंबर नहीं हैं। आपके अन्य परीक्षण मामलों में से कई अन्य कारणों से संदिग्ध दिखते हैं।
ट्रिपल

@tripleee ने मुझे इसे ठीक करने दिया, मैंने इसे किसी भी देश को अपडेट किया है मुझे आशा है कि यह काम करेगा। इसके साथ ही मैंने डुप्लीकेट टेस्ट मामलों को भी हटा दिया
किरण भट्टाराई

0

मैं सिर्फ इस जवाब को वहाँ फेंक रहा हूँ क्योंकि यह मेरी एक समस्या को हल करता है, यह @ तूफानी के उत्तर पर आधारित है, लेकिन इसमें 3 अंकों के देश कोड और अधिक महत्वपूर्ण रूप से कहीं भी एक स्ट्रिंग में उपयोग किया जा सकता है, लेकिन यह मेल नहीं खाएगा एक स्थान / स्ट्रिंग की शुरुआत से पहले और एक शब्द सीमा के साथ समाप्त होता है। यह उपयोगी है ताकि यह URL या कुछ के बीच में यादृच्छिक संख्याओं से मेल न खाए

((?:\s|^)(?:\+\d{1,3}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4})(?:\b)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.