정규식으로 전화번호 형식 변경하기 (-포함해서 출력하기)

|



전화번호를 다루는 프로그래밍을 하다보면 포맷이 다른 경우가 많습니다. 
그래서 중간에 )나 -가 들어가 있는 경우는 그대로 두고, 숫자만 있는 경우 포맷을 변경해서 -를 추가하는 javascript를 구성해 봤습니다. 

즉, 다음과 같은 형태로 처리 된다고 보시면 됩니다. 

021112222 -> 02-111-2222
03111112222 -> 031-1111-2222
0101112222 -> 010-111-2222 

이와 같은 작업을 하기 위해서 두가지 방법이 있습니다. 
전체 자리수를 확인하고 if ~ else를 통해서 경우의 수를 모두 처리하는 방법이겠죠. 

그런데 좀 세련되어 보이지 않습니다. 
그래서 정규식(Regular Expression)을 사용해 보기로 하겠습니다. 

구성한 예제는 다음과 같습니다. 



상당히 간단하게 되어 있는 것 같죠.. ^^
이해하지 못하고 사용하는 것은 본인 소스가 아니라고 봐야 합니다. 
그래서 간단히 위 소스를 설명하도록 하지요..

정규식에서 괄호()를 사용하면 순서대로 $1, $2, $3... 와 같이 불러서 사용할 수 있습니다. 
위 정규식을 살펴보면 괄호가 3개 있는 것을 알 수 있습니다. 

먼저 맨 뒤 괄호부터 보시죠..

([0-9]{4})

바로 0~9까지의 숫자를 4자리 가져온다는 겁니다.
실제 전화번호의 마지막 뒷자리는 4자리로 구성되어 있습니다.

이어서 중간 부분을 살펴보시죠..

([0-9]*)

0~9까지의 숫자 나머지 전부를 가져오라는 겁니다.
즉, 전화번호의 앞부분과 맨 뒷부분을 식별하고 나머지는 중간 자리로 판단한다는 것이죠..

그럼.. 가장 복잡한 앞부분을 살펴보도록 하겠습니다.

(^02.{0}|^01.{1}|[0-9]{3})

복잡해 보이지만 하나씩 풀어보면 쉽습니다. 
^02.{0} : ^는 정규식에서 시작을 의미하죠.. 02로 시작할 경우이구요.. "."은 문자 하나를 나타내는데.. {0}이니 이 문장은 "02"만 추출하겠다는 겁니다. 
^01.{1} : 마찬가지로 01로 시작하는 것이고 .{1} 이므로 이후 1자리까지 추출한다는 것이죠.. 01x로 시작하는 휴대폰을 의미합니다.
[0-9]{3} : 0~9까지 숫자 중 3자리만 추출한다는 것입니다.

이 세 가지 경우를 "|"로 연결하고 있으므로 셋 중의 하나를 선택한다고 보시면 됩니다. 

이렇게 하면 세 가지 숫자가 나오고 이것을 -로 연결하라는 것이 위 정규식의 의미가 되겠죠.. ^^

PHP와 같은 곳에서도 직접 정규식을 사용할 수 있으므로 다음과 같이 사용하면 바로 전화번호를 변경할 수 있겠네요.. 



preg_replace() 함수가  PHP에서 정규식을 통해 문자열을 치환하는 것이네요~

그럼. 즐프하세요 ^^ 
 



Trackback 0 And Comment 0