[Javascript] 정규표현식(Regular Expression)

우지끈·2024년 10월 24일

정규표현식(Regular Expression, RegExp)은 특정한 규칙을 가진 문자열의 패턴을 표현하기 위해 사용되는 일종의 언어다. 자바스크립트뿐만 아니라 어떤 개발 언어에서도 범용적으로 사용 가능하는 특징이 있다.

기본 구조

정규표현식은 / 사이에 패턴을 넣어 정의한다.

const regex = /pattern/flags;
  • pattern: 찾고자 하는 문자열의 패턴
  • flags(optional): 정규표현식의 동작 방식을 지정하는 플래그

플래그는 정규표현식의 옵션으로 선택적으로 사용 가능하며, 한 개 이상의 플래그를 동시에 설정할 수 있다.

플래그 종류
g (global search) : 문자열 내의 모든 패턴 검색
i (case-insensitive) : 대소문자 구분 없이 검색
m (multi-line search) : 여러 줄 검색


패턴

정규표현식에서 다양한 패턴을 표현할 수 있는 기본적인 구성 요소는 다음과 같다. 이 외에도 다양한 패턴이 있으니 필요할 때 찾아서 사용하면 될 것 같다.

  1. 검색:

    • [] : 괄호 안의 문자들 중 하나
    • [^] : 괄호 안의 문자를 제외한 것
    • ^문자열 : 특정 문자열로 시작(괄호x)
    • 문자열$ : 특정 문자열로 끝남
    • () : 그룹 검색 및 분류
    • (a|b) : a 또는 b와 일치
  2. 매칭:

    • a-zA-Z : 영어 알파벳(-으로 범위 지정)
    • ㄱ-ㅎ가-힣 : 한글 문자(-으로 범위 지정)
    • 0-9 : 숫자(-으로 범우 ㅣ지정)
    • . : 모든 문자열(단, 줄바꿈x)
    • \d : 숫자(0-9)
    • \D : 숫자가 아닌 것
    • \w : 문자(알파벳, 숫자, 언더스코어(_))
    • \W : /w가 아닌 것
    • \s : 공백(공백, 탭 등)
    • \S : 공백이 아닌 것
    • \특수기호 : 특수기호
  3. 횟수:

    • * : 0회 이상 반복
    • + : 1회 이상 반복
    • ? : 선택적 (0회 or 1회) 반복
    • {n} : n회 반복
    • {n, } : n회 이상 반복
    • {n,m} : 최소 n회, 최대 m회 반복

메서드

자바스크립트에서는 RegExp 객체나 문자열 메서드(match, replace, test, search) 등을 통해 정규표현식을 활용할 수 있다.

  • match: 일치하는 문자열을 배열 형태로 반환(없으면 null 반환)
// 한국 전화번호 형식 검증(괄호 안 번호 중 하나와 일치 + 하이픈(-) + 3자리 또는 4자리 숫자 + 하이픈(-) + 4자리 숫자)
const regex = /^(010|011|016|017|018|019)-\d{3,4}-\d{4}$/gm; 
const str = `010-123-1234`;
const result = str.match(regex); // ['010-123-1234']
  • replace: 일치하는 문자열을 찾아 해당 텍스트를 다른 텍스트로 대체 후 반환
// 1에서 9 사이의 숫자 중 하나 + 전역검색(일치하는 모든 숫자 탐색)
const regex = /[1-9]/g; 
const str = `This123is456Java789script`;
const result = str.replace(regex, ""); // ""(빈 문자열)로 대체
console.log(result); // ThisisJavascript
  • test: 대상의 매치 여부를 boolean값으로 반환
const regex = /^\d{5}$/;  // 5자리 숫자
const str = `12345`;
const result = regex.test(str); // true;
  • search: 조건에 부합하는 문자열의 index 번호 반환(없으면 -1 반환)
const regex = /^\d{5}$/;
const str = `1234`;
const result = str.search(regex); // -1

정규표현식은 유효성 검사(이메일, 비밀번호 등)과 문자열 반환에 많이 사용된다고 한다. 다소 복잡한 느낌이 없잖아 있지만 범용성도 좋을뿐더러 강력한 문자열 매칭, 변환 기능을 가지고 있기에 공부해두면 유용하게 사용할 수 있을 것이다.

0개의 댓글