이번 글에서는 정규 표현식에 대해 정리해 보려고 한다.
정규 표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식언어로 줄여서 정규식이라고도 부른다. 영어로는 흔히 regex 또는 regexp라고 한다.
정규표현식 기본 문법
- 메타 문자
메타 문자 | 의미 | 메타 문자 | 의미 |
* | 0번 이상 | \ | 이스케이프(escape) 문자 |
+ | 1번 이상 | | | OR |
? | 0번 또는 1번 | ( ) | 그룹 |
^ | 문자열 시작 | {} | 수량자 |
$ | 문자열 끝 | [] | 클래스 (괄호 안 문자 중 하나) |
. | 단일 문자 | [^] | NOT |
- 수량자
수량자 | 의미 |
{m} | 앞에 나온 패턴이 m회 반복되는 경우 |
{m, } | 앞에 나온 패턴이 m회 이상 반복되는 경우 |
{m, n} | 앞에 나온 패턴이 m회 이상 n회 이하 반복되는 경우 |
- 패턴
패턴 | 의미 |
a-zA-Z | 영어알파벳 |
ㄱ-ㅎ가-힣ㅏ-ㅣ | 한글 문자 |
0-9 | 숫자 |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 영어 알파벳, 숫자, 언더스코어(_) |
\W | 일반 문자(\w)가 아닌 것 |
\s | space 공백 |
\S | space 공백 문자를 제외한 문자 |
자바스크립트에서 정규 표현식을 생성하는 두 가지 방법이 있다.
1. 리터럴(Literal) 방식
const re = /abc/
슬래시(/) 사이에 패턴 작성
2. RegExp 객체 방식
const re = new RegExp('abc')
RegExp는 정규 표현식을 구현한 자바스크립트 표준 내장 객체이다.
간단 예제
/abc/.exec('abcdefgh')
>> 'abc'
/abc/.test('abcdefgh')
>> true
모든 RegExp 인스턴스는 RegExp Prototype으로부터 속성과 메소드를 상속 받는다. 상속받은 메소드 중 exec() 메소드와 test() 메소드를 이용하면 정규식을 검사할 수 있다. 두 메소드는 인수로 전달된 문자열에서 특정 패턴을 검색하여 결과를 반환한다.
exec() 메소드는 일치하는 패턴의 문자열을 반환한다. 이때 일치하는 문자열이 여러 번 나오더라도 가장 처음 일치한 문자열만 반환한다. test() 메소드는 일치하는 패턴의 문자열 존재 여부를 boolean 값으로 반환한다.
여러 가지 패턴 검사
/[a-zA-Z]/.test('안녕하세요') // 알파벳이 포함되어 있는지
>> false
/[a-zA-Z]/.test('안녕하세요a')
>> true
/[ㄱ-ㅎ가-힣ㅏ-ㅣ]/.test('안녕하세요') // 한글이 포함되어 있는지
>> true
/^h/.test('hello') // 해당 문자로 시작하는지
>> true
/e$/.test('bye') // 해당 문자로 끝나는지
>> true
/(m|n)/.test('gomgom') // 둘 중에 하나 이상 포함되어 있는지
>> true
/\S+a/.test('qwertya') // 아무 문자의 여러 개 + a
>> true
알아두면 여러모로 도움이 되는 정규식 기억해두자!
'Develop > JavaScript' 카테고리의 다른 글
[JavaScript] localStorage 사용하기 (0) | 2023.02.22 |
---|---|
[JavaScript] Destructuring Assignment (구조 분해 할당) (0) | 2023.02.03 |
[JavaScript] ?.(Optional Chaining) / ??(Nullish Coalescing Operator) (0) | 2023.02.02 |
[JavaScript] Rest Parameter (0) | 2023.01.30 |
[JavaScript] Spread Operator (0) | 2023.01.26 |