문자열 내에서 패턴을 찾아서 바꾸거나 빼거나 추가하고 싶을 때 사용
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 |