Language/Javascript
[Javascript] RegExp 정규표현식
i-m-okay
2024. 7. 9. 13:05
너무 편리한데 패턴을 자꾸 까먹어서 정리해보았다.
Regular Expression
일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어
문자열을 대상으로 패턴 매칭 기능을 제공
정규 표현식 생성
flag
flag | meaning |
---|---|
g | 전역탐색 (g가 없을 경우엔 첫번째 패턴까지만 검색함) |
i | 대소문자 구분X |
m | 여러줄에 걸쳐 탐색 |
u | 패턴을 유니코드 포인트의 시퀀스로 간주 |
y | 대상문자열의 현재 위치에서의 탐색 시작 |
패턴
pattern | meaning |
---|---|
A{1,2} | A가 최소 1번, 최대 2번 반복 |
A{2} | A가 2번 반복 |
A{2,} | A가 최소 2번 반복 |
A+ | A가 최소 한번 반복 |
A?B | A가 최대한번 반복되고 B가 이어짐 |
A | B |
[AB]+ | A 또는 B가 1번 이상 반복 |
[A-Za-z]+ | A-Z 또는 a-z(알파벳) 가 1번 이상 반복 |
[0-9]+ [\d]+ | 숫자가 한번 이상 반복 |
[\D]+ | 숫자가 아닌 문자가 한번 이상 반복 |
[\w,]+ | 알파벳, 숫자, 언더스코어, ' , ' 가 한번 이상 |
[\W]+ | 알파벳,숫자,언더스코어 아닌 문자 하나 이상 |
[^0-9]+ | 0-9가 아닌 문자 하나 이상 |
^https | https로 시작하는지 |
com$ | com으로 끝나는지 |
^[\s]+ | 여러가지 공백문자([\t\r\n\v\f]를 의미)로 시작하는지 |
[0-9a-zA-Z]* | 숫자 또는 알파벳이 0번 이상 |
메서드
RegExp.prototype.exec : 매칭 결과를 배열로 반환
const target = 'Is this all there is?';
const regExp = /is/;
regExp.exec(target);
// expected
// ["is", index:5, input:"Is this all there is?", groups:undefined]
- 매칭 결과가 없는 경우 null
- g 플래그를 지정해도 첫번째 매칭 결과만 반환
RegExp.prototype.test : 매칭 결과를 불리언으로 반환
const target = 'Is this all there is?';
const regExp = /is/;
regExp.test(target);
// expected
// true
String.prototype.match : 매칭 결과를 배열로 반환
const target = 'Is this all there is?';
const regExp = /is/g;
target.match(regExp);
// expected
// ["is", "is"]
- exec와 다르게 g플래그를 붙이면 전체 문자열을 탐색
String.prototype.replace : 정규표현식 패턴의 문자를 대체
const target = 'abc#123';
// 대소문자 구분없이 숫자 또는 알파벳이 아닌 문자(특수문자)으로 시작
const regExp = /[^0-9A-Za-z]/gi;
target.replace(regExp, '');
// expected
// abc123
참고 : Javascript deep dive 31장