| : 또는
() : 그룹 (반복되는 형태) => ( 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 그룹중 하나를 선택하는 ()와
[]안에있는 것들 중 하나를 선택하는 []는 위의 내용은 같은 결과를 볼 수 있다.
?
: 특정문자(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 검색
\b
문자 : 문자열이 문자가 맨앞에 쓰이는 것만 불러온다.
문자\b
: 문자열이 맨뒤에 쓰이는 것만 불러온다.
^문자 : 문장의 시작 맨 앞의 문자와 해당하는 것을 불러온다.
문자$ : 문장의 마지막의 문자와 해당하는 것을 불러온다.
^$
를 사용하자ex)
'...___-'.replace(/^.|-$/g,'a')
// "a..___a"
바로앞이(^) .이거나 맨끝이($) -라면 그 부분을 a로 바꾸기
\
기호를 추가하여 '...___-'.replace(/^\.|\-$/g,'a')
형태가 더 나을듯하다. 'abcdefg'.replace(/\bab/,'')
//"cdefg"
'abcdefg'.replace(/fg\b/,'')
//"abcde"
맨앞에있는 ab만 체크하고 생략시키고 맨뒤에있는 fg만 체크하고 생략시킨다.
\d : 숫자
\w : 단어, 숫자
\s : 공백
\특수문자 : 특수문자를 쓰고 싶을때
( ) 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) [ ] 형태와 ( )형태를 잘 사용하면서 필요한 갯수만큼 { }로 정하자
- 단어 문자를 제외한 것 찾기
- 단어 문자만 포함하는 것 찾기
- 단어 문자에 특정 문자(@,!) 포함하는 것만 찾기
- 연속되는 단어 한개로 바꾸기
- 처음이나 끝자리 단어가 .이면 제거
- 처음이 알파벳이나 숫자가 아닐때 제거하고 뒤쪽이 알파벳이나 숫자면 제거하지 않는다.
console.log('!.ar10eispq-_@'.replace(/[\w]/g,''))
//!.-@
console.log('!.ar10eispq-_@'.replace(/[^\w]/g,''))
//ar10eispq_
\w
는 알파벳 + 숫자 + _ 중의 한 문자 console.log('!.ar10eispq-_@'.replace(/[^\w\!\@]/g,''))
//!ar10eispq_@
console.log('...P...h...'.replace(/\.+/g,'.'))
//.P.h.
console.log('...P...h...'.replace(/^\.|\.$/g,''))
//..P...h..
console.log('a..P...h..!'.replace(/^\w|\W$/g,''))
// ..P...h..