//생성자
new RegExp('표현', '옵션')
new RegExp('[a-z]', 'gi)
//리터럴
/표현/옵션
/[a-z]/gi
g
: 모든 문자열 일치(global)
i
: 영어 대소문자를 구분 않고 일치(ignore case)
m
: 각각의 줄을 하나의 시작과 끝으로 보기(multi line)
const str = `
010-1234-5678
thetodayisfighting@coding.com
https://omdbapi.com/?apikey=7035c60c&s=frozen.
THE quick brown fox jumps over the lazy dog.
abbcccdddd.
`
console.log(str.match(/\./gim))
// [".", ".", ".", ".", "."] 문장 전체에서 .를 찾는다.
console.log(str.match(/\.$/gim))
// [".", ".", "."]
// '$' 문장의 끝 부분만 확인한다.
// `/` 이스케이프의 활용
// . 이라는 기호가 원래는 어떠한 기능으로 쓰이는데,
// 단순히 기능이 아닌 문자로만 검색하기 위해 이스케이프라는 `\` 를 넣어주어 문자로 인식되게 한다.
^ab
: 줄(Line) 시작에 있는 ab와 일치
ab$
: 줄(Line) 끝에 있는 ab와 일치
. : 임의의 한 문자와 일치
a|b
: a 또는 b와 일치
ab?
: b 가 없거나 b 와 일치
{3}
: 3개 연속 일치
{3,}
: 3개 이상 연속 일치
{3,5}
: 3개~5개 연속 일치
[abc]
: a 또는 b 또는 c
[a-z]
: a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]
: A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]
: 0부터 9 사이의 문자 구간에 일치(숫자)
[가-힣]
: 가 부터 힣 사이의 문자 구간에 일치(한글)
\w
: 63개 문자(word, 대소문자 52개, 숫자 10개 + _)에 일치
\b
: 63개 문자에 일치하지 않는 문자 경계(Boundary) <특수문자>
\d
: 숫자 (Digit)에 일치
\s
: 공백(space, tab 등)에 일치
(?=)
: 앞쪽 일치(Lookahead)
(?<=)
: 뒤쪽 일치(Lookbehind)
test
: 정규식.test(문자열) 일치여부를 Boolean 값으로 반환
match
: 문자열.match(정규식) 일치하는 문자열을 Array 값으로 반환
replace
: 문자열.replace(정규식, 대체문자) 일치하는 문자열을 대체하고 대체된 문자열을 반환
exec
: 정규식.exec(문자열) 일치하는 하나의 정보(Array) 반환
split
: 문자열.split(정규식) 일치하는 문자열을 분할하여 Array 값으로 반환
search
: 문자열.search(정규식) 일치하는 문자열의 인덱스(Number) 값으로 반환
toString
: 생성자_정규식.toString() 생성자 함수 방식의 정규식을 리터럴 방식의 문자열(String)으로 반환
위 3개의 메소드(
test
,match
,replace
) 가 가장 자주 쓰임
const str = `
010-1234-5678
thetodayisfighting@coding.com
https://omdbapi.com/?apikey=7035c60c&s=frozen
THE quick brown fox jumps over the lazy dog.
abbcccdddd
`
// 생성자 방식
const regexp = new RegExp('the', 'g')
// ["the", "the"] "g는 전역을 의미"
console.log(str.match(regexp))
const regexp = new RegExp('the', 'gi')
// ["the", "THE", "the"] "i는 대소문자 구별하지 않겠다" 를 의미
console.log(str.match(regexp))
//리터럴 방식
const regexp = /the/gi
// ["the", "THE", "the"]
console.log(str.match(regexp))