[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