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