정규표현식 - 패턴(표현) (2)

OROSY·2021년 4월 12일
0

JavaScript

목록 보기
48/53
post-thumbnail

1. 패턴(표현)

정규표현식에는 다양한 패턴(표현)이 있습니다. 그 패턴의 의미(기능)와 직관적으로 매칭되지 않기 때문에 외우지 않는 이상 의미를 파악할 수 없습니다. 이번에는 이러한 패턴에 대해 살펴봅시다.

1.1 자주 사용되는 패턴(1)

패턴설명
[abc]a 또는 b 또는 c
[a-z]a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]0부터 9 사이의 문자 구간에 일치(숫자)
[가-힣]가부터 힣 사이의 문자 구간에 일치(한글)

1.2 사용 예제(1)

const str = `
010-1234-5678
the7632@gmail.com
https://www.omdbapi.com/?apikey=2181d79b&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
http://localhost:1234
동해물과 백두산이 마르고 닳도록
`

console.log(str.match(/[fox]/g)) // 값: (14) ["o", "o"..]
// 사용된 f, o, x를 모두 찾아냄
console.log(str.match(/[0-9]/g)) // 값: (25) ["0", "1"..]
// 사용된 숫자를 모두 찾아냄
console.log(str.match(/[0-9{1,}]/g)) // 값: (7) ["010", "1234"..]
// 사용된 숫자 중 1개 이상 연속으로 일치하는 숫자 찾아냄
console.log(str.match(/[가-힣{1,}]/g)) // 값: (4) ["동해물과", "백두산이"...]
// 사용된 한글 중 1개 이상 연속으로 일치하는 한글 찾아냄

2.1 자주 사용되는 패턴(2)

패턴설명
\w63개 문자(Word, 대소영문52개 + 숫자 10개 + _)에 일치
\b63개 문자에 일치하지 않는 문자 경계(Boundary)
\d숫자(Digit)에 일치
\s공백(Space, Tab 등)에 일치

2.2 사용 예제(2)

const str = `
010-1234-5678
the7632@gmail.com
https://www.omdbapi.com/?apikey=2181d79b&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
http://localhost:1234
동해물과_백두산이 마르고 닳도록
`

console.log(str.match(/\w/g)) // 값: (127) ["0", "1"..]
console.log(str.match(/\b/g)) // 값: (54) ["", ""..]
console.log(str.match(/\bf\w{1,}\b/g)) // 값: (2) ["frozen", "fox"]
// 경계 사이에 있는 f로 시작하는 1개 이상 연속으로 일치하는 63개 문자 찾아냄
// 쉽게 말해, 소문자 f로 시작하는 영어 문자를 찾아내는 방법
console.log(str.match(/\d{1,}/g)) // 값: (7) ["010", "1234"..]
// 사용된 숫자 중 1개 이상 연속으로 일치하는 숫자 찾아냄
console.log(str.match(/\s/g)) // 값: (19) ["↵", "↵", " "..]
// 공백에 일치하는 값 찾아냄


const h = `  the hello  world		!

`

console.log(h.match(/\s/g)) // 값: (9) [" ", " "..]
console.log(h.replace(/\s/g, '')) // 값: thehelloworld!
// 공백이 있는 값을 모두 지우는 방법

3.1 자주 사용되는 패턴(3)

패턴설명
(?=)앞쪽 일치(Lookahead)
(?<=)뒤쪽 일치(Lookbehind)

3.2 사용 예제(3)

const str = `
010-1234-5678
the7632@gmail.com
http://www.omdbapi.com/?apikey=2181d79b&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`

console.log(str.match(/.{1,}(?=@)/g)) // 값: ["the7632"]
// @ 앞쪽으로 일치하는 1개 이상의 임의의 문자 찾아냄
console.log(str.match(/(?<=@).{1,}/g)) // 값: ["gmail.com"]
// @ 뒤쪽으로 일치하는 1개 이상의 임의의 문자 찾아냄
profile
Life is a matter of a direction not a speed.

0개의 댓글