Standart 10 haneli telefon numarasıyla eşleşen normal ifade


125

Aşağıdaki biçimleri destekleyen standart ABD tipi bir telefon numarası için normal bir ifade yazmak istiyorum:

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

# herhangi bir sayı anlamına gelir. Şimdiye kadar aşağıdaki ifadeleri buldum

^[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}

sırasıyla. Sonuncusunun noktalı çek için doğru olup olmadığından tam olarak emin değilim. Bahsettiğim farklı formatlara hitap eden 4 farklı ifade yerine tek bir ifade yazmanın bir yolu olup olmadığını da bilmek istiyorum. Eğer öyleyse, bunu nasıl yapacağımdan emin değilim. Ayrıca, isteğe bağlı bileşen olarak alan kodunu desteklemek için bir koşul ekleyebilmem için ifadeyi / ifadeleri nasıl değiştirebilirim? Gibi bir şey

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

+1 alan kodudur ve isteğe bağlıdır.


5
stackoverflow.com/questions/123559/… adresinin olası kopyası , önerilen yanıt, rakam olmayan her karakteri çıkarmaktır. Bu şekilde, doğrulamayı basitleştirirsiniz
Arnaud Denoyelle

1
Bunun bir süre önce olduğunu biliyorum, ancak ABD alan kodlarının 1 ile başlayabileceğini sanmıyorum. (123)
456-7890

Daha eksiksiz bir doğru cevap için bakınız: stackoverflow.com/a/18626090/561710
Joe Johnston

Telefon numaralarını ayrıştırmak zordur. Google bunun için açık kaynaklı bir kitaplık yayınladı. Kendinize yardım edin, libphonenumber (veya kendi dilinizde bir çatal) kullanın
aloisdg codidact.com'a taşınıyor

Yanıtlar:


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

Aşağıdakilerle eşleşir

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

ABD dışındaki numaralarda eşleşme istemiyorsanız şunu kullanın:

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

Güncelleme:
Aşağıdaki Simon Weaver kullanıcısı tarafından fark edildiği gibi, formatlanmamış sayılarla eşleştirme ile de ilgileniyorsanız, ayırıcı karakter sınıfını isteğe bağlı yapın.[\s.-]?

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

1
İlk satırınızın (? \ D {3}) kısmında soru işaretinin gerekli olmadığını mı düşünüyorsunuz? '(' Ve ')'
noobcoder

2
?Parantez orada uygular ()değil hanesini. Tam ilgili normal ifade \(?\d{3}\)?. isteğe bağlı (tarafından ) olan (yapılan) \d{3}arasında üç basamak olması gerektiğini belirtir . ()?
Ravi Thapliyal

6
not: bu 1234567890 ile eşleşmiyor ve sorun olabilir veya olmayabilir. Benim için öyleydi - Sadece eklendi böylece ?her sonra [\s.-]bu isteğe yapmak
Simon_Weaver

1
@Simon_Weaver Girişleriniz için teşekkür ederiz. Gözlemlerinizi cevaba ekledim.
Ravi Thapliyal

3
Bahsedilen @ BobRay sorununu önleyen birini istiyorsanız, kullanın ^(\+\d{1,2}\s)?((\(\d{3}\))|(\d{3}))[\s.-]\d{3}[\s.-]\d{4}$. (Temel olarak,
normal İfadenin

130

Bu problemin birçok olası varyasyonu vardır. İşte daha önce SO'ya verdiğim cevaba benzer bir düzenli ifade.

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

Aşağıdaki örneklerle ve çok daha fazlasıyla eşleşecektir:

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

Telefon numarasının girilme şekline bakılmaksızın, yakalama grupları telefon numarasının dökümünü yapmak için kullanılabilir, böylece onu kodunuzda işleyebilirsiniz.

  • Grup1: Ülke Kodu (ör: 1 veya 86)
  • Grup2: Alan Kodu (ör: 800)
  • Grup3: Değişim (ör: 555)
  • Grup4: Abone Numarası (ör: 1234)
  • Grup5: Uzatma (ör: 5678)

İşte ilgileniyorsanız ifadenin bir dökümü:

^\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.

Alan Kodunu isteğe bağlı yapmak için, alan kodu için (\ d {3}) işaretinden sonra bir soru işareti eklemeniz yeterlidir.


8
en iyi cevap IMHO. Amacım \siçin, başlangıçta ve sonda gerekli değildir, çünkü doğrulama için kullanıyorum ve alan zaten kesilmiş.
Daniel

2
Şimdiye kadar en iyi cevap ve en eksiksiz. Ayrıca normal ifade dağılımını da gerçekten takdir ediyorum.
Bryant Jackson

@Kondal Başarısız olmasını sağlamak için kullandığınız girdiyi merak ediyorum. Ülke kodu için 0 ile benim için iyi çalışıyor gibi görünüyor.
Francis Gagnon

<input type = "text" name = "phone_no" class = "form-control" ng-pattern = "^ \ s * (?: \ +? (\ d {1,3}))? [-. (] * (\ d {3}) [-.)] * (\ d {3}) [-.] * (\ d {4}) (?: * x (\ d +))? \ s * $ "yalnızca -numbers ng-maxlength = "10" />
Kondal

@Kondal Üzgünüm. Bu normal ifadeyle eşleşemeyen, eşleştirmeye çalıştığınız metni kastetmiştim.
Francis Gagnon

8

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

Şu telefon numaralarıyla eşleşir:

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'a bakın


7

İşte oluşturduğum oldukça kompakt bir tane.

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

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

Aşağıdaki kullanım durumlarına göre test edilmiştir.

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

Bu, (800 444-4444
Jake

6

Jsfiddle'da yukarıda belirtilen çözümleri kullanarak bir örnek eklemek. Müşterilerimin ihtiyacına göre kodu biraz değiştirdim. Umarım bu da birine yardımcı olur.

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

Buradaki Örneğe Bakın


4

Pakistanlı kullanıcılar için bunu deneyin. İşte oluşturduğum oldukça kompakt bir tane.

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

Aşağıdaki kullanım durumlarına göre test edilmiştir.

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

4

Kullandığım telefon numarası normal ifadesi: /^[+]?(\d{1,2})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/

Kapaklar:

  • 18001234567
  • 1 800 123 4567
  • +1800123-4567
  • +86 800123 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 ve 4 ifadeleri oldukça benzerdir, bu yüzden kullanabilirsiniz:

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

Kullanılan normal ifadelerin diline ve markasına bağlı olarak, \2yerine koymanız $2gerekebileceğini veya bu tür eşleştirmelerin hiç desteklenmeyebileceğini unutmayın.

Bunu format 2 ile birleştirmenin ^(regex for 1,3,4|regex for 2)$çirkin, beceriksiz ve sayıların parçalarını çıkarmayı zorlaştıran aşikar dışında iyi bir yolu göremiyorum .

Alan koduna gelince, (\+\d)?tek haneli bir alan kodunu yakalamak için başa ekleyebilirsiniz (üzgünüm, alan kodlarınızın formatını bilmiyorum).


2

Buna ne dersin?

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

DÜZENLEME: () birini unuttum. DÜZENLEME 2: İlk 3 basamaklı kısım yanlış.


.Bir karakter sınıfındayken noktadan kaçmaya gerek yoktur , [-\.\s]aslında öyle olmalıdır [-.\s], çünkü ters eğik çizgiyi eşleştirmek istemiyoruz.
Vedran Šego

Ters eğik çizgiyle gerçekten eşleşir mi? Gerekli olmayabileceğini düşündüm ama% 100 emin değildim.
crimson_penguin

Haklısın. Sadece denedim (daha önce hiç ters eğik çizgiye ihtiyacım olmadı) [\.]ve [.]her ikisi de yalnızca [\\.]nokta ile eşleşirken hem nokta hem de ters eğik çizgi eşleşir. Yorumunuz için teşekkür ederim.
Vedran Šego

Normal ifadelerle ilgili fikrim, birisine bir normal ifade veriyorsan ona her zaman bir açıklamayla eşlik et veya normal ifadenin değersiz olmasıdır. Sadece benim fikrim.
John Red

2

@ Ravi'nin cevabından başlayarak , NPA (Alan) Kodu için de bazı doğrulama kuralları uyguladım .

Özellikle:

  • 2 (veya daha yüksek) ile başlamalıdır
  • İkinci ve üçüncü rakamlar (N11) olarak "11" olamaz.

Ayrılmış bloklar (N9X, 37X, 96X) ve 555 dahil olmak üzere birkaç başka kısıtlama daha var, ancak bunları özellikle ayırdım, çünkü ayrılmış bloklar ileride kullanım görebilir ve 555 test için yararlıdır.

Bulduğum şey buydu:

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

Alternatif olarak, boş değerleri de eşleştirmek istiyorsanız (alan gerekli değilse), şunları kullanabilirsiniz:

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

Geçerli sayılar için test durumlarım (çoğu @Francis'in cevabından):

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

Geçersiz test durumlarım şunları içerir:

(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 +

Normal ifadem rakam gruplarını çıkarmak için gruplamayı içermez, ancak bunları içerecek şekilde değiştirilebilir.


2

Diğerleriyle karşılaştırıldığında belki de en kolayı.

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

Aşağıdakilerle eşleşir:

(555) 444-6789

555-444-6789

555.444.6789

555 444 6789


Mükemmel bir ... Teşekkürler (y)
Sushil Sharma

2

Bu kod, bir ABD veya Kanada telefon numarasıyla eşleşecek ve ayrıca bunun geçerli bir alan kodu ve değişim olduğundan emin olacaktır:

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

Regex101.com'da test edin


2

Normal bir 10 basamaklı telefon numarasını ve isteğe bağlı uluslararası kodu (1 ila 3 basamaklı) ve isteğe bağlı dahili numarayı (herhangi bir sayıdaki basamak) doğrulamak için normal ifade kalıbı :

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

Demo: https://www.regextester.com/103299

Geçerli girişler:

/* 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

Bu normal ifadeyi benim için en çok 10 haneli iletişim numarası için yararlı buluyorum:

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

Referans : https://regex101.com/r/QeQewP/1

Açıklama:

görüntü açıklamasını buraya girin


Bu açıklamayı oluşturmak için bir araç kullandınız mı? Paylaşmak! Teşekkürler
bilinmeyen

@unnknown, regex101.com gibi çevrimiçi bir normal ifade denetleyicisinden alınan bir ekran görüntüsüne benziyor. SO yönergelerinin, tüm metin, kod, veri ve hata mesajlarının görüntü değil metin biçiminde girilmesi gerektiğini belirttiğini unutmayın, çünkü görüntülerdeki metnin özellikle mobil cihazlarda okunması zor olabilir ve daha büyük bant genişliği sağlar. Ayrıca metin kopyalanıp yapıştırılamaz. Bu durumda, renkler emin olmayan bir şeyler katabilir. Genel olarak, "Cevaplar" ın metinsel bir açıklama içermesi gerektiğini bilin. Amitesh: Ziyaretçilerin denemeleri için normal ifadeniz zaten doldurulmuş olarak bu siteye bir bağlantı eklemek faydalı olacaktır.
SherylHohman

@unnknown burada, bu yazıdakine benzer bir görüntü oluşturan bir bağlantıdır. Amitesh'in normal ifade dizesi zaten yapıştırıldı. Sonuçları test etmek için telefon numaralarını girebilirsiniz: regex101.com/r/QeQewP/1
SherylHohman

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

0

Bu, düşünebildiğim kadar eşleşecek ve size ülke, bölge, ilk ve son olarak grup eşlemesi sağlayacak daha kapsamlı bir versiyon.

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

0

peki ya "+" olan birden çok sayı ve bunları ";" ile ayırın. "," "-" veya "" karakterleri?


0

İle bitirdim

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

bu, Hollandaca sayılar gibi şeylere izin vermekti, örneğin

+358 300 20200


0

Yukarıdaki normal ifadede küçük bir değişiklik var @Francis Gagnon.

Amaç: Olası herhangi bir deseni tespit etmek için bir kullanıcı ABD telefon numarasını paylaşabilir


Versiyon 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*$

Burada test edin Codepen: https://codepen.io/kiranbhattarai/pen/NWKMXQO

Normal ifadenin açıklaması: https://regexr.com/4kt5j


Versiyon 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*$

İçinde ne var: Test senaryoları dizinin bir parçası olabilir. Birinci versiyonda, test senaryoları çalışmak için bir hattın başlangıcı olmalıdır.

Codepen: https://codepen.io/kiranbhattarai/pen/GRKGNGG

Normal ifadenin açıklaması: https://regexr.com/4kt9n


Başarısız olabilecek bir model bulursanız lütfen yorum yapın, düzelteceğim.

Test Örnekleri: Geçer

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 vb. Kesinlikle ABD telefon numaraları değildir. Diğer test durumlarınızdan birkaçı başka nedenlerle şüpheli görünüyor.
üçlü

@tripleee bunu düzeltmeme izin verin, çalışacağını umduğum herhangi bir ülkeye güncelledim. Ek olarak yinelenen test durumlarını da kaldırdım
Kiran Bhattarai

0

Bu cevabı oraya atıyorum çünkü benim bir problemimi çözüyor, @ stormy'nin cevabına dayanıyor, ancak 3 haneli ülke kodları içeriyor ve daha da önemlisi bir dizede herhangi bir yerde kullanılabilir, ancak eşleşmeyecek, değil mi önünde dizenin bir boşluk / başlangıcı ve bir sözcük sınırı ile biten. Bu, bir URL'nin veya başka bir şeyin ortasındaki rastgele sayılarla eşleşmemesi için kullanışlıdır.

((?:\s|^)(?:\+\d{1,3}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4})(?:\b)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.