ʕ ˙ɷ˙ ʔค

Javascript

정규표현식

YJ_P 2023. 4. 17. 11:16

문자열 내에서 패턴을 찾아서 바꾸거나 빼거나 추가하고 싶을 때 사용 

g는 global로 모든 문자열에서 , m은 multiline으로 여러 라인에서 패턴을 찾겠다는 옵션

 

1. 일반 문자열 

/hello/gm
/hello world/gm
/Hello/gm
/Hello/gim   //대소문자 구분하지 않는 옵션 i

2. 처음과 끝 (문자열 잡아서 빼거나 수정하거나 패턴을 가져오기)  많이 사용 x 

/^hello/gm : 처음에 hello (^ 텍스트의 시작)
/hello$/gm : 끝에 hello	($ 텍스트의 끝)

3. 모든 문자 

.(dot)은 모든 문자가 매칭된다. 
/h.llo/gm      hello, halo,  hollo 다 선택 
/h[eo]llo/gm      [ ] 는 택1

4. 범위 지정 

범위를 지정하고 싶을 때 -(대쉬) 사용 

/h[a-zA-Z0-9]llo/gm    :  모든 알파벳과 숫자를 찾음 중요함 
/h[0-9]llo/gm : 숫자가 매칭된다. h10llo는 매칭 불가 
/h[^0-9]llo/gm : 숫자를 제외한 문자만 매칭

 

/(on|ues|rida)/gm   //  그룹1로 3개 중 매칭되는 패턴 찾음

5. 수량자

_* : 앞에 있는 문자가 0개 ~ N개 ({0,})
_+ : 앞에 있는 문자가 1개 ~ N개({1,})
_? : 앞에 있는 문자가 0개 ~ 1개 ({0,1})

6. 부정 [^] 부정은 대괄호 안에 들어가야 부정 

/ h[^ ae]llo / g

{3} : 3개  

{3,} :3개 이상

{1,3} :1개~3개

/0[0-9]{2}[-.! ]?[0-9]{3,4}[-.! ]?[0-9]{4}/gm      //?는 앞에 있는 문자가 0개~1개 01019133829 공백 , - ,  / 없는 것 찾음  

[-.! ] :  -(대쉬) .(dot) ! 띄어쓰기  다 잡음  

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$    // +는 1개 이상  / ^시작 / $끝/  \는 .을 순수한 .으로 판단하는 것

[0-9]+  //숫자만 잡음 

/\d/gm 숫자 

/\D/gm  //not 숫자

[문제] 

'paullab CEO leehojun hello CEO'  
'paullab CEO leehojun hello CEO'.replace('CEO', 'CTO')    // 문자열 1개만 매칭되어 변경 
'paullab CEO leehojun hello CEO'.replace(/CEO/g, 'CTO') // flag로 global을 주어서 전체 변경(m-다중라인, i-대소문자구분x) 

'paullab CEO leehojun hello CEO'.match(/CEO/g)  //패턴을 찾아 Array로 변환
'paullab CEO leehojun hello CEO'.split(/CEO/g)  //특정한 패턴으로 split

(/CEO/g).test('paullab CEO leehojun hello CEO') // 패턴이 들어가 있으면 true 없으면 false 

// 알고리즘 문제 풀이할 때 주의 사항
// split을 하면 내가 원하는 갯수보다 1개가 더 추가되어 나온다!! 
'!!!'.split('!')    //공백을 4개
'!a!a!a'.split('!') //4개 앞에 !도 공백을 준다. 
'a!a!a!'.split('!')  //4ro 
'!a!a!a'.split('!').length - 1   // 원하는 개수 3개

 

 

'Javascript' 카테고리의 다른 글

this  (0) 2023.04.17
스택(stack) / 큐(queue)  (0) 2023.04.16
함수, 배열  (0) 2023.04.09
변수  (0) 2023.03.30