다음 형식을 지원하는 표준 미국 유형 전화 번호에 대한 정규식을 작성하고 싶습니다.
###-###-####
(###) ###-####
### ### ####
###.###.####
여기서 #은 임의의 숫자를 의미합니다. 지금까지 다음 표현을 생각해 냈습니다.
^[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은 지역 번호이며 선택 사항입니다.
답변
^(\+\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}$
업데이트 :
아래 사용자 Simon Weaver가 알 수 있듯이 형식화되지 않은 숫자 일치에도 관심이 있다면 구분 문자 클래스를 다음과 같이 선택 사항으로 만드십시오.[\s.-]?
^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$
답변
이 문제에 대해 가능한 많은 변형이 있습니다. 다음은 이전에 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)
- 그룹 3 : 교환 (예 : 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}) 뒤에 물음표를 추가하면됩니다.
답변
^(\+\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 참조
답변
여기 제가 만든 상당히 간결한 것이 있습니다.
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
답변
jsfiddle에서 위에서 언급 한 솔루션을 사용하여 예제를 추가합니다. 클라이언트 요구 사항에 따라 코드를 약간 수정했습니다. 이것이 누군가에게 도움이되기를 바랍니다.
/^\s*(?:\+?(\d{1,3}))?[- (]*(\d{3})[- )]*(\d{3})[- ]*(\d{4})(?: *[x/#]{1}(\d+))?\s*$/
답변
파키스탄 사용자를 위해 이것을 시도하십시오. 여기 내가 만든 상당히 간결한 것이 있습니다.
((\+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
답변
내가 사용하는 전화 번호 정규식 :
/^[+]?(\d{1,2})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/
커버 :
- 18001234567
- 1800123 4567
- +1800 123-4567
- +86800123 4567
- 1-800-123-4567
- 1 (800) 123-4567
- (800)123-4567
- (800) 123-4567
- (800) 1234567
- 800-123-4567
- 800.123.4567
