티스토리 뷰
목차
문자열 처리란 문자열을 조작하거나 분석하는 과정을 말합니다. 예를 들어 문자열을 자르거나 합치거나 바꾸거나 검색하는 등의 작업이 있습니다. 정규식이란 특정한 규칙을 가진 문자열 집합을 표현하는 형식 언어입니다. 정규식은 패턴으로 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식입니다. 문자열 처리와 정규식의 차이는 정규식은 문자열 처리의 한 방법 중 하나라는 점입니다. 즉, 정규식은 문자열 처리를 보다 간편하고 효율적으로 할 수 있도록 도와주는 도구라고 할 수 있습니다
정규식 패턴이란 정규식으로 표현한 문자열의 규칙을 말합니다. 정규식 패턴은 다양한 메타문자와 특수문자를 조합하여 만들 수 있습니다. 메타문자란 문자 그대로의 의미가 아니라 특별한 의미를 가진 문자를 말합니다. 예를 들어 ^는 문자열의 시작을 나타내고 $는 문자열의 끝을 나타냅니다. 특수문자란 메타문자와 달리 문자 그대로의 의미를 가진 문자를 말합니다. 예를 들어 a는 a라는 글자를 나타냅니다.
정규식 패턴은 다음과 같은 형식으로 작성할 수 있습니다.
/패턴/플래그
패턴은 앞서 설명한 메타문자와 특수문자로 구성된 규칙입니다. 플래그는 패턴을 적용할 때 옵션을 지정하는 부분입니다. 예를 들어 i는 대소문자 구분 없이 검색하라는 의미이고 g는 전역 검색하라는 의미입니다.
예시:
/^Hello/i
이 패턴은 대소문자 구분 없이 Hello로 시작하는 문자열을 찾습니다.
/[a-z]+$/g
이 패턴은 소문자 알파벳으로 끝나는 모든 문자열을 찾습니다.
정규식 패턴의 예시를 들어보겠습니다.
/\d{3}-\d{4}-\d{4}/
이 패턴은 010-1234-5678과 같은 전화번호 형식을 찾습니다. \d는 숫자를 나타내고 {n}은 n번 반복한다는 의미입니다.
/[A-Z][a-z]+/
이 패턴은 John과 같은 대문자로 시작하고 소문자로 이어지는 단어를 찾습니다. [A-Z]는 대문자 알파벳 중 하나를 나타내고 [a-z]+는 소문자 알파벳을 한 번 이상 반복한다는 의미입니다.
/[^aeiou]/i
이 패턴은 모음이 아닌 문자를 찾습니다. ^는 부정의 의미로 사용되고 [aeiou]는 모음 중 하나를 나타냅니다. i 플래그는 대소문자 구분 없이 검색하라는 의미입니다.
정규식 패턴을 만드는 방법은 다음과 같습니다.
원하는 문자열의 규칙을 파악합니다. 예를 들어 이메일 주소는 @ 기호 앞에 아이디가 오고 뒤에 도메인이 오는 형식입니다.
메타문자와 특수문자를 사용하여 규칙을 표현합니다. 예를 들어 이메일 주소는 /\w+@\w+.\w+/로 표현할 수 있습니다. \w는 영문자나 숫자나 밑줄을 나타내고 +는 한 번 이상 반복한다는 의미입니다. .은 점을 나타냅니다.
필요한 경우 플래그를 추가합니다. 예를 들어 대소문자 구분 없이 검색하려면 i 플래그를 사용합니다.
정규식 패턴을 작성한 후에 테스트해보고 수정합니다.
예시:
/^[a-z0-9_-]{3,16}$/
이 패턴은 3~16글자의 소문자 알파벳이나 숫자나 밑줄이나 하이픈으로 구성된 아이디를 찾습니다.
/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/
이 패턴은 이메일 주소를 찾습니다.
/^(https?://)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?$/
이 패턴은 웹사이트 주소를 찾습니다.
정규식 작성하는 방법에 대해 구체적으로 자세히 설명해드리겠습니다.
원하는 문자열의 규칙을 파악합니다. 예를 들어 이메일 주소는 @ 기호 앞에 아이디가 오고 뒤에 도메인이 오는 형식입니다.
메타문자와 특수문자를 사용하여 규칙을 표현합니다. 메타문자란 문자 그대로의 의미가 아니라 특별한 의미를 가진 문자를 말합니다. 예를 들어 ^는 문자열의 시작을 나타내고 $는 문자열의 끝을 나타냅니다. 특수문자란 메타문자와 달리 문자 그대로의 의미를 가진 문자를 말합니다. 예를 들어 a는 a라는 글자를 나타냅니다. 예를 들어 이메일 주소는 /\w+@\w+.\w+/로 표현할 수 있습니다. \w는 영문자나 숫자나 밑줄을 나타내고 +는 한 번 이상 반복한다는 의미입니다. .은 점을 나타냅니다.
필요한 경우 플래그를 추가합니다. 플래그란 패턴을 적용할 때 옵션을 지정하는 부분입니다. 예를 들어 i는 대소문자 구분 없이 검색하라는 의미이고 g는 전역 검색하라는 의미입니다.
정규식 패턴을 작성한 후에 테스트해보고 수정합니다.
예시:
/^[a-z0-9_-]{3,16}$/
이 패턴은 3~16글자의 소문자 알파벳이나 숫자나 밑줄이나 하이픈으로 구성된 아이디를 찾습니다.
/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/
이 패턴은 이메일 주소를 찾습니다.
/^(https?://)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?$/
이 패턴은 웹사이트 주소를 찾습니다.