728x90
반응형
1. 정규식 생성
// 정규표현식 (RegExp, Regular Expression)
// - 문자 검색
// - 문자 대체
// - 문자 추출
// 생성자
// new RegExp('표현', '옵션(플래그)')
// new RegExp('[a-z]', 'gi')
const str = `
010-22134-125
test@gmail.com
hello world!
https://test.com/?tset=123
the test is test
hello@naver
http://234:234
동해물과
asdfsaew
`
// const regexp = new RegExp('the', 'gi')
// // match() : 문자 데이터에서 정규식을 기준으로 특정한 문자를 매칭
// console.log(str.match(regexp))
// 리터럴
// /표현/옵션
// /[a-z]/gi
const regexp = /the/gi
// match() : 문자 데이터에서 정규식을 기준으로 특정한 문자를 매칭
console.log(str.match(regexp))
2. 메소드
// 메소드
// 정규식.test(문자열) : 일치 여부 반환
// 문자열.match(정규식) : 일치하는 문자의 배열 반환
// 문자열.replace(정규식, 대체문자) : 일치하는 문자를 대체
const str = `
010-22134-125
test@gmail.com
hello world!
https://test.com/?tset=123
the test is test
hello@naver
http://234:234
동해물과
asdfsaew
`
const regexp = /fox/gi
console.log(regexp.test(str))
console.log(str.match(regexp))
console.log(str.replace(regexp, 'cat'))
3. 플래그
// 플래그
// g - 모든 문자 일치(global)
// i - 영어 대소문자를 구분 않고 일치(ignore case)
// m - 여러 줄 일치(multi line), 각각의 줄을 시작과 끝으로 인식!
const str = `
010-22134-125
test@gmail.com
hello world!
https://test.com/?tset=123
the test is test The
hello@naver
http://234:234
동해물과
asThedfsaew
.
`
console.log(str.match(/the/)) // 리터럴 정규식과 일치하는 첫번째 단어를 배열로 반환
console.log(str.match(/the/g)) // 전부 찾는데, 대소문자 구분
console.log(str.match(/the/gi)) // 전부 찾는데, 대소문자 구분 안함
console.log(str.match(/\.$/gi)) // . : 실제 마침표 문자, $ : 앞쪽 문장이 끝나는지 확인
console.log(str.match(/\.$/gim))
// 플래그
// ^ab | 줄 시작에 있는 ab와 일치
// ab$ | 줄 끝에 있는 ab와 일치
// . | 임의의 한 문자와 일치
// a|b | a 또는 b와 일치
// ab? | b가 없거나 b와 일치 (물음표 바로 앞 문자만 적용)
// {3} | 3개 연속 일치
// {3, } | 3개 이상 연속 일치
// {3,5} | 3개 이상 5개 이하(3~5개) 연속 일치
// + | 1회 이상 연속 일치, `{1,}`
// [ab] | a 또는 b
// [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)
const str = `
010-22134-125
test@gmail.com
hello world!
https://test.com/?tset=123
the test is testdogaaa
hello@naver
Http://234:234
동해물과
asdfsaewh
`
console.log(str.match(/^h.../gm)) // ['hell', 'http', 'hell']
console.log(str.match(/\.com$/gm)) // m 플래그를 추가하지 않으면 줄의 시작은 010, 끝은 asdfsaewh 부분이 됨
console.log(str.match(/...\.com$/gm)) // 앞에서 3글자만 ['ail.com']
console.log(str.match(/fox|dog/g)) // ['dog']
console.log(str.match(/https?/gi)) // ['https', 'Http']
console.log(str.match(/\d{3}/g)) // ['010', '221', '125', '123', '234', '234']
console.log(str.match(/\d{3,9}/g)) // 3개~9개까지 연속 일치되는 숫자
console.log(str.match(/a{3}/g)) // ['aaa']
console.log(str.match(/a+/g)) // ['a', 'aaa', 'a', 'a', 'a']
console.log(str.match(/a{1,}/g)) // ['a', 'aaa', 'a', 'a', 'a']
4. 패턴
const str = `
010-2234-1254
test@gmail.com
hello world!b
https://test.com/?tset=123=234856sfd2345
the test is testdogaaa
hello@naver
Http://234:234
동해물과 백두산
asdfsaewh
http://localhost:78.@sdf/jdkslfjio
___
`
console.log(str.match(/[ab]/g)) // ['a', 'b', 'a', 'a', 'a', 'a', 'a', 'a']
console.log(str.match(/[a-z]/g)) // 모든 알파벳 소문자 찾음
console.log(str.match(/[a-z]{1,}/g)) // 알파벳이 연속으로 한번 이상 반복되는 단어
console.log(str.match(/[a-z]+/g)) // 알파벳이 연속으로 한번 이상 반복되는 단어
console.log(str.match(/[a-zA-Z가-힣]+/g)) // 대/소문자 알파벳, 한글이 연속으로 한번 이상 반복되는 단어
console.log(str.match(/[가-힣]{1,2}/g)) // ['동해', '물과']
console.log(str.match(/[가-힣0-9]{3}/g)) // ['010', '221', '125', '123', '234', '234', '동해물']
console.log(str.match(/\w+/g)) // 숫자, 대/소문자, _(언더바) 단어
console.log(str.match(/\b[0-9]+\b/g)) // 연속적으로 일치하는 숫자
console.log(str.match(/\b\d+\b/g)) // 연속적으로 일치하는 숫자
console.log(str.match(/\s/g)) // ['\n', '\n', '\n', ' ', '\n', '\n', ' ', ' ', ' ', '\n', '\n', '\n', '\n', '\n', '\n']
console.log(str.match(/https?:\/\/(?:\w+\.?)+\/?/g)) // 그룹지정은 여러번 반복할 때 사용
console.log(str.match(/.+(?=과)/g)) // ['동해물'] 앞쪽과 일치
console.log(str.match(/(?<=과).+/g)) // [' 백두산'] 뒤쪽과 일치
// 전화번호 추출
console.log(str.match(/\d{3}-\d{4}-\d{4}/g)) // ['010-2234-1254']
// 이메일 주소 추출
console.log(str.match(/\w+@\w+\.\w+/g)) // ['test@gmail.com']
728x90
반응형
'JS, TS' 카테고리의 다른 글
[JS] 컴포넌트 - 해시 라우터 관리 (0) | 2024.01.16 |
---|---|
[JS] 컴포넌트 (0) | 2024.01.16 |
[JS] 심화 학습 (0) | 2024.01.15 |
[JS] 기타 Web APIs (1) | 2024.01.15 |
[JS] 이벤트 2 (0) | 2024.01.15 |