전화번호가 wildly variable
US: (415) 555-0199, 415-555-0199, 415.555.0199, +1 415 555 0199. 한국: 010-1234-5678, 02-1234-5678. UK: +44 7700 900123. 모든 나라가 변형 가짐.
모양 loose 패턴
텍스트의 phone-like 거 찾기:
\+?\d[\d\s().-]{7,}\d
Optional 플러스, 숫자, 그 다음 7+ 글자 숫자/공백/괄호/점/대시, 숫자로 끝.
US 특정 검증
^(?:\+1\s*)?(?:\(\d{3}\)|\d{3})[\s.-]?\d{3}[\s.-]?\d{4}$
Optional +1, area code (괄호 또는 bare), 구분자, exchange, 구분자, 라인 번호.
진짜 검증엔: libphonenumber
Google 의 libphonenumber 가 모든 나라, 포맷 변형, 검증 룰 처리. Python (phonenumbers), JS, Java 등 바인딩 존재. 본인 앱이 국제 전화번호 받으면 사용. 정규식이 거기 못 데려감.
가장 단순 유용 패턴
그냥 "phone-shape 레이아웃에 10+ 숫자 포함" 원하면 위 loose 패턴이 자유 텍스트 추출에 OK. 검증엔 country-specific 패턴 OR libphonenumber 필요.