본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


카테고리 없음

javascript 공부 11 - 기본개념7(정규표현식)

반응형
반응형

정규표현식(RegExp)

 

정규표현식이라 문자열을 검색하고 대체하는 데 사용 가능한 일종의 형식 언어(패턴) 이다 .

간단한 문자 검색부터 이메일 , 패스워드 검사 등의 복잡한 문자 일치 기능 등을  정규식 패턴으로 빠르게 수행할 수 있다 . 

역할

  • 문자 검색 (search)
  • 문자 대체 (replace)
  • 문자 추출(extract)

테스트 사이트

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

정규표현식은 자바스크립트에서만 사용하는 것이 아니기 때문에  특정 언어에서 작동하는 정규표현이 다른언어에서는 안돌아 갈 수도 있다 .  자신이 사용하는 언어 기준으로 테스트가 되고 있는지 확인이 필요하며 위의 사이트에서 테스트 했다 하더라도 본인의 개발 환경에서 한번 더 테스트 해보는 것이 좋다 .

 

 

메소드문법설명

test 정규식.test(문자열) 일치 여부 boolean 봔환
match 문자열.match(정규식) 일치하는 문자의 배열(Array)반환
replace 문자열.replace(정규식 , 대체문자) 일치하는 문자를 대체

플래그(옵션)

플래그설명

g 모든 문자 일치 (global)
i 영어 대소문자를 구분 하지 않고 일치(ignore case)
m 여러 줄 일치(multi line)

 

패턴(표현)

패턴설명

^ab 줄 시작에 있는 ab와 일치
ab$ 줄 끝에 있는 ab와 일치
. 임의의 한 문자와 일치
a | b a 또는 b와 일치
ab? b가 없거나 b와 일치
{3} 3개 연속 일치
{3,} 3개 이상 연속 일치
{3,5} 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개 문자에 일치하지 않는 문자 경계
\d 숫자(Digit)에 일치
\s 공백(space, tab)에 일치
(?=) 앞쪽 일치(Lookahead)
(?<=) 뒤쪽 일치(Lookbehind)

 

 

//줄 바꿈을 포함하여 쓰고싶다면 ``백틱으로 감싼다

const str = 
`
010-1234-1234
ugo04@gmai.com
https://www.omdbapi.com/?apikey=f1ab98ec&s=parasite
The quick brown fox jumps over the lazy dog.
abbcccdddd
`

//생성자 함수를 통해서 생성
//const regexp = new RegExp('the','g')

//리터럴 방식 정규표현식
// \ 일반문자로 해석시킴(escape)
// . 어떤 문자도 허용
// $ 끝부분을 지칭함
// m 줄마다 검색 (multiline)

// h 로 시작하고 p 로 끝나는 4글자 찾음
const regexp = /h..p/g

//fox 또는 dog를 찾고 둘중에 먼저 찾아지는 것만 반환 
const regexp2 = /fox|dog/

//s가 없을 수도 있고 있을 수도 있다.
const regexp3 = /https?/g

//d가 2개 연속 일치하는 것을 반환
const regexp4 = /d{2}/g

//d가 2개 이상 인것을 반환
const regexp5 = /d{2,}/g

//d가 2개 이상 3개 이하인 것을 반환

//\w <- 숫자를 포함한 영어알파벳을 의미
const regexp6 = /\w{2,3}/g

// \b 특수문자를 의미함 
// 아래는 특수문자가 앞뒤로 붙기떄문에 결국
// 영어나 숫자로만 3글자인 단어만  반환
const regexp7 = /\b\w{2,3}\b/g

//f또는 o 또는 x를 찾음
const regexp8 = /[fox]/g

//전역에서 숫자가 1개 이상으로 연속되는 것을 찾음
const regexp9 = /[0-9]{1,}/g


//1개이상 연속되는 한글 찾음
const regexp10 = /[가-힣]{1,}/g

//영어 , 숫자 , _
const regexp11 = /\w/g

//소문자 f로 시작하는 모든 문자를 리턴
const regexp12 = /\bf\w{1,}\b/g

//숫자3개연속
const regexp13 = /\d{3,}/g

//공백문자  리턴
const regexp14 = /\s/g

//@앞의 1개이상 모든문자를 출력
const regexp15 = /.{1,}(?=@)/g

const regexp16 = /(?<=@).{1,}/g


const h = `  hi there wow !
`

//정규식 메서드

//정규식에 맞는데이터가 존재하는지 확인(boolean 반환)
//console.log(regexp.test(str));

//데이터 대채 원본 변경 X
//console.log(str.replace(regexp,'AAA'))

console.log(h.replace(regexp14,''))

console.log(str.match(regexp16))
반응형