정규표현식

KHW·2021년 3월 18일
0

다양한 지식쌓기

목록 보기
8/48

정규표현식

1) 그룹 및 범위

2) 수량 자

3) 경계 유형

4) 캐릭터 클래스

5) 문자 표현식


1) 그룹 및 범위

| : 또는
() : 그룹 (반복되는 형태) => ( a ) | ( b ) => 가능하면 여러글자들의 알파벳 형태와 같은 것
[] : 안에 있는 문자 중 하나 => 안에 문자 중 하나라도 만족하는 것을 대상으로 진행을 한다.
(?:) : 그룹 없애기

ex)
/gr[ab]y/를 통해 gray grby 가능 graby 불가능

ex)
'aaabbbccc'.replace(/(aaa)|(bbb)/,'fff') //"fffbbbccc"
'aaabbbccc'.replace(/(aaa)|(bbbb)/g,'fff') //"fffbbbccc"

ex)
'gray'.replace(/gr(a|b)y/,'g') //"g"
'gray'.replace(/gr[ab]y/,'g') //"g"

a나 b 그룹중 하나를 선택하는 ()와
[]안에있는 것들 중 하나를 선택하는 []는 위의 내용은 같은 결과를 볼 수 있다.


2) 수량 자

? : 특정문자(or그룹범위)가 하나 없거나 있거나
* : 특정문자(or그룹범위)가 없거나 있거나 많거나
+ : 특정문자(or그룹범위)가 하나있거나 그이상

(\w)
[\w]

둘다 같은 결과이다. 왜냐면

[abc]와 (abc)는 검색이 각각 [abc] a,b,c를 찾고 (abc)는 abc를 한번에 찾는다.
[\w]와 (\w)는 그냥 단 하나를 적용하기 때문에 둘다 같은 결과로 위의 내용은 적용된다.

ex)
gra?y => gray, gry 검색
gra*y => gray, graaay ,gry 검색
gra+y => gray, graaay 검색 (gry 검색불가능)


{n} : 해당 앞에 문자가 n번 반복
{min,} : 해당 숫자가 최소 min회 반복
{min,max} : 해당 숫자가 최소 min회에서부터 최대 max회까지 존재

ex)
gra{2}y => graay 검색
gra{2,}y => graay, graaaaaay 검색
gra{2,3}y => graay, graaay 검색


3) 경계 유형

\b문자 : 문자열이 문자가 맨앞에 쓰이는 것만 불러온다.
문자\b : 문자열이 맨뒤에 쓰이는 것만 불러온다.
^문자 : 문장의 시작 맨 앞의 문자와 해당하는 것을 불러온다.
문자$ : 문장의 마지막의 문자와 해당하는 것을 불러온다.

  • 앞 뒤를 체크하는 거는 가능하면 ^$를 사용하자

ex)
'...___-'.replace(/^.|-$/g,'a') // "a..___a"

바로앞이(^) .이거나 맨끝이($) -라면 그 부분을 a로 바꾸기

  • 위와같이 해도 상관은 없으니 가능하다면 문자에 대해서는 \기호를 추가하여 '...___-'.replace(/^\.|\-$/g,'a')형태가 더 나을듯하다.

'abcdefg'.replace(/\bab/,'') //"cdefg"
'abcdefg'.replace(/fg\b/,'') //"abcde"

맨앞에있는 ab만 체크하고 생략시키고 맨뒤에있는 fg만 체크하고 생략시킨다.


4) 캐릭터 클래스

\d : 숫자
\w : 단어, 숫자
\s : 공백
\특수문자 : 특수문자를 쓰고 싶을때


5) 문자표현식


적용 유형

( ) x ( )로 그룹 2개로 나뉜다.
첫번째 그룹 : \d{1,} => 숫자형태로 최소1개이상의 조합
두번째 그룹 : \d{1,} => 숫자형태로 최소1개이상의 조합


^의 사용

1) [] 괄호의 밖에 있을 때 : 문장의 시작을 처리
2) []와 같은 괄호의 안에 있을 때 : 안에있는 형태들의 부정

ex)
'a1!@_-.b*'.replace(/[^\w-_.]/g, '') //"a1_-.b"

대괄호에 존재하는 것 들중 하나라도 만족하지 않는(^) 것에 대해 생략('')을 진행한다.


빈문자열 체크

/^$/g


정리

어떤 것 혹은 다른 것 중에 있나 찾고 싶을때 => 어떤것|다른것
어떤 것 혹은 다른 것 중에 특정 문자를 추가로 갖고 싶을때 => [어떤것|다른것]특정문자

ex) grababy와 graby를 찾고싶을때 쓰는 방법 => 중간에 ab가 반복되는형태
/grab+y/하면 /gra[b]+y/ 형태로 인식을 해버려 b가 연속되는 것 밖에 찾을 수 없다. 따라서 ab를 그룹으로 생각하여 연속적인 ab그룹을 찾을 수 있는 /gr(ab)+y/ 형태로 해야한다.

ex) 무조건 마지막이나 처음 값을 정할때는 ^ 혹은 $를 사용한다.

ex) [ ] 형태와 ( )형태를 잘 사용하면서 필요한 갯수만큼 { }로 정하자


출처

드림코딩앨리
문자표현식

많이쓰는 유형

  1. 단어 문자를 제외한 것 찾기
  2. 단어 문자만 포함하는 것 찾기
  3. 단어 문자에 특정 문자(@,!) 포함하는 것만 찾기
  4. 연속되는 단어 한개로 바꾸기
  5. 처음이나 끝자리 단어가 .이면 제거
  6. 처음이 알파벳이나 숫자가 아닐때 제거하고 뒤쪽이 알파벳이나 숫자면 제거하지 않는다.

1.

console.log('!.ar10eispq-_@'.replace(/[\w]/g,''))
	//!.-@

2.

    console.log('!.ar10eispq-_@'.replace(/[^\w]/g,''))
		//ar10eispq_
  • \w알파벳 + 숫자 + _ 중의 한 문자

3.

    console.log('!.ar10eispq-_@'.replace(/[^\w\!\@]/g,''))
	//!ar10eispq_@

4.

       console.log('...P...h...'.replace(/\.+/g,'.'))
	//.P.h.

5.

    console.log('...P...h...'.replace(/^\.|\.$/g,''))
		//..P...h..

6.

    console.log('a..P...h..!'.replace(/^\w|\W$/g,''))
	//	..P...h..
profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글