자유로이

쉽게 알아가는 정규표현식 사용법 기초편(전화번호 패턴) 본문

IT/프로그래밍

쉽게 알아가는 정규표현식 사용법 기초편(전화번호 패턴)

wooyaa 2020. 8. 19. 14:49

오늘은 특정한 규칙 안에서만 입력된 데이터를

가공하거나 치환하기 위해
문자열 함수나 비교문을 쓸수도 있지만

특정 케이스만 커버되기때문에 조금만 규칙이 벗어나면

그에 해당하는 케이스를 분별하려면 복잡한 코드가 되어버립니다.
문자열을 검색하고 대체하기위해

패턴을 편리하게 사용할수 있도록 
정규표현식에 대해 알아보도록 하겠습니다.

정규표현식은 자주 사용되는것도 아니고 가독성이 좋지않아서 처음 써보려다 어려움을 느끼는 분들이 많습니다.
쉽게 접근해서 차근차근 알아보도록 하겠습니다.

예로 전화번호(숫자)를 정규표현식으로 찾는법을 해보겠습니다.

digit을 뜻하는 \d로 한글자씩 숫자를 찾을수 있습니다.


하지만 010 이나 02 이렇게 붙어있는 숫자를 찾을 수는 없기에  
\d에 +를 붙여주면 연결된 숫자를 찾을 수 있게 됩니다.
+는 하나 또는 그이상 연결된 것을 뜻합니다.

표현법은 \d+



만약 문자열에서 숫자만 존재하지 않고 다른 문자가 있을때는 어떡해야 할까요?
0~9까지의 숫자를 표현하는 [0-9],

*는 0개 이상이다라는 뜻입니다.
표현법은 [0-9]\d* 즉 0~9의 숫자가 0개이상이다를 의미합니다. 

 
그런데 전화번호는 -을 포함하거나, 포함하지 않을 수 있습니다.

예를 들어, 다음은 모두 유효한 전화번호입니다.
01012345678
010-1234-5678
010 1234 5678
연속된 숫자만 전화번호로 할것인지,

중간에 포함된 '-' 나 ' '(공백)까지 포함할것인지,

모두 인식할수 있는 표현식을 한단계씩 알아보도록 하겠습니다.

\d+-?\d+-?\d+



?는 '있거나 없거나'라는 뜻입니다.

-?는 -가 있거나 없다를 의미합니다.

즉 이를 연속하는 숫자는 \d+와 조합하면 전화번호를 찾는 정규표현식을 만들 수 있습니다.

하지만 이표현식은 공백이 포함된 전화번호를 찾을 수 없습니다.

(공백)과 -이 있거나 없다는 조건은 [- ]?로 표현할 수 있습니다.

 

{숫자}는 `숫자`번 반복한다는 뜻입니다.

예를 들어 \d{2}는 숫자가 연속 두 번 나온다는 뜻입니다.
{숫자1, 숫자2}는 숫자1부터 숫자2까지 반복한다는 뜻입니다. 

예를 들어, \w{2,3}는 문자가 2 ~ 3번 나온다는 뜻입니다.

위에 표현법을 이용하면 
\d{2,3}[- ]?\d{3,4}[- ]?\d{4}

 


이걸로 전화번호를 찾는법을 알아보았습니다.

도움이 되셨나요? :)

Comments