on
[Javascript] 정규표현식 RegExp
1. Flag (플래그)
2. Groups and ranges
3. Quantifiers
4. Boundary-type
5. Character classes
Flag (플래그)
플래그는 정규표현식의 옵션으로 검색하려는 문자 패턴에 추가적인 옵션을 넣어 원하는 문자 검색 결과를 반환한다.
| 플래그 | 설명 | 
|---|---|
| g | global (모든 문자와 여러 줄 일치) | 
| i | insensitive, ignore case (영어 대소문자를 구분 않고 일치) | 
| m | multi line (여러 줄 일치) | 
| u | unicode (유니코드) | 
| y | stickty ( lastIndex속성으로 지정된 인덱스에서만 1회 일치) | 
g (global)
자주 사용되는 플래그는 g이다.
g는 모든 문자와 여러 줄 일치되는 값을 찾는다.
//플래그 g를 안 붙힌 RegExp
//중복문자 있어도 단 하나 문자만 배열에 저장되어 출력
let xg = /a/;
console.log('ewewatada'.match(xg)); //Array [ "a" ]
//플래그 g를 붙힌 RegExp
//중복문자 있어도 있는 문자를 다 출력한다.
let og = /a/g;
console.log('ewewatada'.match(og)); //Array(3) [ "a", "a", "a" ]
i (insensitive)
i는 영어 대소문자 구분없이 찾을 때 쓴다.
// Flag i
// Flag i 안 붙힌 regExp
// 대소문자 상관 하여 대소문자 맞춰서 결과 출력함
let xi = /a/;
console.log('dsfefA'.match(xi)); //null
// Flag i를 붙힌 RegExp
// Flag i를 붙히면 대소문자 관계없이 regExp 조건을 실행
let oi = /a/i;
console.log('dsfefA'.match(oi)); //Array [ "A" ]
m (multi line)
m은 한 줄의 시작 단어를 찾는^와 한 줄의 끝 단어를 찾는 $를 쓸 때 쓴다.
// Flag m
let str = `is\nthis\nhis\n?`
// 한 줄의 끝 단어가 is일때 출력
// Flag m을 안 붙힌 RegExp
let xm = /is$/g;
console.log(str.match(xm)); // null
// Flag m을 붙힌 RegExp
let om = /is$/gm;
console.log(str.match(om)); // Array(3) [ "is", "is", "is" ]
let str1 = `is\nis th\nis it?`
// 한 줄의 시작 단어가 is일때 출력
// Flag m을 안 붙힌 RegExp
let xm1 = /^is/g;
console.log(str1.match(xm1)); // Array [ "is" ]
// Flag m을 붙힌 RegExp
let om1 = /^is/gm;
console.log(str1.match(om1)); // Array(3) [ "is", "is", "is" ]
u (unicode)
유니 코드 문자(이모지) 처리하기 위해 필요하다.
// Flag u
console.log("🤡🤧👺💀👻👽🤖💩😺😸😹😻😼😽🙀😿😾".match(/[😸-😿]/gu)); 
//Array(8) [ "😺", "😸", "😹", "😻", "😼", "😽", "😿", "😾" ]
Groups and ranges
| Chracter | 뜻 | 
|---|---|
| \| | 또는 | 
| () | 그룹 | 
| [] | 문자셋, 괄호안의 어떤 문자든 | 
| [^] | 부정 문자셋, 괄호안의 어떤 문가 아닐때 | 
| (?:) | 찾지만 기억하지는 않음 | 
Quantifiers
| Chracter | 뜻 | 
|---|---|
| ? | 없거나 있거나 (zero or one) | 
| * | 없거나 있거나 많거나 (zero or more) | 
| + | 하나 또는 많이 (one or more) | 
| {n} | n번 반복 | 
| {min,} | 최소 | 
| {min,max} | 최소, 그리고 최대 | 
Boundary-type
| Chracter | 뜻               |
| ——– | —————- |
| \b     | 단어 경계        |
| \B     | 단어 경계가 아님 |
| ^      | 문장의 시작      |
| $      | 문장의 끝        |
Character classes
| Chracter | 뜻                           |
| ——– | —————————- |
| \      | 특수 문자가 아닌 문자        |
| .      | 어떤 글자 (줄바꿈 문자 제외) |
| \d     | digit 숫자                   |
| \D     | digit 숫자 아님              |
| \w     | word 문자                    |
| \W     | word 문자 아님               |
| \s     | space 공백                   |
| \S     | space 공백 아님              |
Discussion and feedback