31.1. 정규 표현식이란?
- 정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하는 형식 언어
- 문자열 대상으로 패턴 매칭 기능 제공
- 특정 패턴과 일치하는 문자열 검색 또는 추출하는 기능
- 유효성 검사
- 반복문과 조건문 없이 패턴 정의하여 테스트 가능
31.2. 정규 표현식의 생성
- / : 시작 및 종료 기호
- regexp : 패턴(pattern)
- i : 플래그(flag)
- RegExp 생성자 함수: new RegExp(pattern[, flags])
31.3. RegExp 메서드
31.3.1. RegExp.prototype.exec
- 인수로 전달받은 문자열을 정규 표현식의 패턴으로 검사하여 결과를 배열로 반환
- ex. regExp.exec(target)
31.3.2. RegExp.prototype.test
- 인수로 전달받은 문자열을 정규 표현식의 패턴으로 검사하여 결과를 불리언으로 반환
- ex. regExp.test(target)
31.3.3. String.prototype.match
- String 표준 빌트인 객체 제공
- 대상 문자열과 전달받은 정규 표현식의 매칭 결과를 배열로 반환
- ex. string.match(regExp)
- g 플래그 지정시 모든 매칭 결과를 배열로 반환
31.4. 플래그
- i (ignore case) : 대소문자 구별하지 않고 패턴 검색
- g (global) : 대상 문자열 내에서 패턴과 일치하는 모든 문자열 전역 검색
- m (multi line) : 문자열의 행이 바뀌더라도 계속 검색
- 선택적 옵션, 순서 상관 없이 여러 개의 플래그 설정 가능
31.5. 패턴
- 일정한 규칙(패턴)을 가진 문자열의 집합을 표현하기 위한 형식 언어
- 패턴은 /로 열고 닫음
- 따옴표 생략
31.5.1. 문자열 검색
- 정규 표현식의 패턴에 문자 또는 문자열을 지정하여, RegExp 메서드 사용하여 검색 수행
- 플래그를 생략하는 경우 첫 번째 결과만 반환
31.5.2. 임의의 문자열 검색
const string = 'Hello world';
const regExp = /.../g;
string.match(regExp);
31.5.3. 반복 검색
- {m,n} : 최소 m번, 최대 n번 반복되는 문자열 의미
- 콤마 뒤에 공백 있으면 정상 동작하지 않음
- ex. /A{1,2}/g -> A가 최소 1번, 최대 2번 반복
- : 앞의 패턴이 최소 한 번 이상 반복되는 문자열 = {1,}
- ? : 앞의 패턴이 최대 한 번 이상 반복되는 문자열 = {0,1}
31.5.4. OR 검색
- | = or
- [] 내 문자로 범위 지정 가능
- /A+|B+/g = /[AB]+/g
- /[A-Z]+/g = A~Z가 한 번 이상 반복되는 문자열 전역 검색
- /[A-Za-z]+/g = 대소문자 구별하지 않음
- /[0-9]+/g = /[\d,]+/g = 숫자 검색
- \w = [A-Za-z0-9_] = 알파벳, 숫자, 언더스코어
31.5.5. NOT 검색
- [^...] = not 의미, 제외한 문자 ㄱ머색
31.5.6. 시작 위치로 검색
- [] 내부에 위치하지 않은 ^ : 문자열의 시작 의미
31.5.7. 마지막 위치로 검색
31.6. 자주 사용하는 정규표현식
31.6.1. 특정 단어로 시작 검사
31.6.2. 특정 단어로 종료 검사
31.6.3. 숫자로만 이루어진 문자열 검사
- ^\d+$/ : 숫자로 시작하며, 앞선 패턴이 반복됨
31.6.4. 공백으로 시작하는지 검사
- \s : 여러 가지 공백 문자(스페이스, 탭 등) 의미
- /^[\s]+/
31.6.5. 아이디 사용 가능 검사
- 알파벳 대소문자 또는 숫자로 시작하고 끝나며, 4~10자리인지 검사
- /^[A-Za-z0-9]{4,10}$/
31.6.6. 메일 주소 형식 검사

31.6.7. 핸드폰 번호 형식 검사
31.6.8. 특수문자 포함 여부 검사
- /[^A-Za-z0-9]/gi
- 문자 및 숫자가 아닌 문자 검사
- 특수문자 제거: string.replace(/[^A-Za-z0-9]/gi, '')
[출처] 모던 자바스크립트, Deep Dive