📚 Reference
MDN, https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions#special-negated-character-set
javascript.info, https://ko.javascript.info/regexp-introduction
참고 사이트에 내용을 개인적으로 복습하기 편하도록 재구성한 글입니다.
자세한 설명은 참고 사이트를 살펴보시기 바랍니다.
정규표현식
문법
정규표현식은 "패턴"과 "플래그"로 두 가지로 구성되어 있습니다. 그리고 아래와 같이 두 가지 문법으로 표현이 가능합니다.
const firstRegexp = new RegExp("pattern", "flags");
const secondRegexp = /"pattern"/"flags";
플래그
문법 | 설명 |
---|
g | 전역 검색 |
i | 대소문자 구분 없는 검색 |
m | 다중행(multi-line) 검색 |
패턴
문법 | 설명 |
---|
abc | 정확히 대응되는 abc 탐색 |
^abc | 입력의 시작 부분이 abc로 대응되는지 탐색 |
abc$ | 입력의 끝 부분이 abc로 대응되는지 탐색 |
^abc$ | 입력의 시작과 끝이 abc로 대응되는지 탐색 |
문법 | 설명 |
---|
a* | a가 0개 이상 대응되는지 탐색, a{0,}과 동일 |
a+ | a가 1개 이상 대응되는지 탐색, a{1,}과 동일 |
a? | a가 0개 이상 1개 이하로 대응되는지 탐색, a{0,1}과 동일 |
a{n} | a가 n개 이상 대응되는지 탐색 |
a{2,} | a가 2개 이상 대응되는지 탐색 |
a{3,5} | a가 3개 이상 5개 이하로 대응되는지 탐색 |
문법 | 설명 |
---|
(abc) | 포획 괄호 |
(?:abc) | 비포획 괄호 |
\num | num은 숫자, 정규식 내부의 num번째 포획 괄호 |
\d(?=px) | px이 뒤따라오는 단일 숫자에 대응되는지 탐색, lookahead |
\d(?!px) | 단일 숫자 뒤에 px이 없는 경우에 대응되는지 탐색, negated lookahead |
(ab)* | ab가 0개 이상 대응되는지 탐색 |
(ab){1,5} | ab가 1개 이상 5개 이하로 대응되는지 탐색 |
a|b | a 또는 b에 대응되는지 탐색 |
(a|b)cd | acd 또는 bcd에 대응되는지 탐색 |
문법 | 설명 |
---|
[ ] | 괄호 안에 포함된 한 문자에 대응되는지 탐색 |
[^ ] | 첫문자로 ^를 쓰면 괄호 내용의 부정. 즉, 괄호 안에 포함되지 않는 한 문자에 대응되는지 탐색 |
[ab] | a 또는 b에 대응되는지 탐색, a|b 와 동일 |
[a-d] | a부터 d까지 중에 대응되는지 탐색, a|b|c|d 또는 [abcd] 와 동일 |
^[a-zA-Z] | 입력의 시작이 영문에 대응되는지 탐색 |
[0-9]% | % 앞에 하나의 숫자가 대응되는지 탐색 |
%[^a-zA-Z]% | 두 % 사이에 영문 없이 대응되는지 탐색 |
문법 | 설명 |
---|
. | 개행 문자를 제외한 모든 단일 문자 |
\d | 숫자, [0-9]와 동일 |
\D | 숫자가 아닌 것, [^0-9]와 동일 |
\w | 언더바를 포함한 영숫자 문자, [a-zA-Z0-9_]와 동일 |
\W | 언더바를 포함한 영숫자 문자가 아닌 것, [^a-zA-Z0-9_]와 동일 |
[\b] | 백 스페이스 |
\b | 단어 경계 |
\B | 단어 경계가 아닌 것 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 것 |
\f | 폼피드 문자 |
\n | 줄 바꿈 문자 |
\r | 캐리지 리턴 문자 |
\t | 탭 문자 |
\0 | 널 문자 |
(?=REGEX_1)REGEX_2
Match only if REGEX_1 matches; after matching REGEX_1, the match is discarded and searching for REGEX_2 starts at the same position.
(?!REGEX_1)REGEX_2
Match only if REGEX_1 does not match; after checking REGEX_1, the search for REGEX_2 starts at the same position.