‘ . ’은 모든 character를 나타낸다.
-> /./g
단어에서 특정부분에 여러개의 문자가(character) 올 수 있는 경우 [ ] 안에 올 수 있는 문자열을 집어넣는다.
-> /b[abc]r/g
: bag, bbg, bcg
주의! /b[a,b,c]/g
의 형태로 작성하면 안됨! (쉼표, 띄어쓰기로 구분하는게 아니라 이어붙임)
단어에서 특정 문자를 제외하고 나머지를 표시하고 싶을 경우 [ ]안에 '^'뒤에 제외하고싶은 문자를 집어넣는다.
-> /b[^ab]g
: 'bag', 'bbg' 제외한다.
범위를 지정하고 싶을 때는 ‘ [ - ] ‘를 사용하여 범위를 지정해준다.(알파벳, 숫자)
-> /[a-e]/g
: a, b, c, d, e
-> /[1-5]/g
:" 1, 2, 3, 4, 5
문자 뒤에 ‘ * ‘를 붙이면 해당 문자가 0~무한 까지를 표시한다.
-> /be\*g
: br, ber, beer...
문자 뒤에 ‘ + ‘를 붙이면 해당 문자가 1~무한 까지를 표시한다
-> /be+g
: ber, beer...
주의!
‘ * ‘은 해당 문자가 없는것도 표시, ‘ + ‘는 무조건 1번은 나와야 함
문자 뒤에 ‘ ? ‘를 붙이면 optional을 뜻한다. (나와도 되고 안 나와도 되고)
-> /colou?r/g
: color, colour
문자 뒤에 ‘ { 숫자 } ’를 붙이면 해당 문자가 몇번 중복된다를 표시할 수 있음(be{2}r -> beer)
-> /be{2}r/g
: beer
문자 뒤에 ‘ { 숫자, }’를 붙이면 해당 문자가 적어도 몇번은 나와야 한다를 표시할 수 있음
-> /be{2}r/g
: beer, beeer, beeeer...
문자 뒤에 ‘ { 숫자 , 숫자}’를 붙이면 해당 문자가 중복되는 범위를 표시할 수 있음
-> /be{1,3}r/g
: ber, beer, beeer
‘ ( ) ’를 사용하여 표현식을 그룹화 할 수 있다.
-> /(haa)/g
: 'haa' 단어를 그룹화
‘ \숫자 ‘ 의 뜻은 n번째 그룹의 값을 사용하겠다는 뜻이다.
-> /(ha)-\1,(haa)-\2/g
: 'ha-ha,haa-haa' (1이 'ha'를 나타내고 2가 'haa'를 나타냄)
‘ ( ?: ) ‘ 의 뜻은 그룹핑을 하지만 그룹핑 값을 저장하지 않는다는 뜻이다. 따라서 \n의 효과를 받지 않는다
-> /(?:ha)-ha,(haa)-\1/g
: 'ha-ha,haa-haa'('(?:ha)'는 그룹핑값을 저장하지 않으므로 '\1'은 'haa'가 된다)
‘ | ‘ 의 뜻은 or를 의미한다
-> /(C|c)at|rat/g
: Cat, cat, rat
‘ { } [ ] / \ + * . $^ | ? ‘와 같은 특수문자를 표시하고 싶을 때는 ‘ \ ‘를 앞에 붙여준다.(저 특수기호들은 \ 을 붙이지 않으면 각각의 뜻이 있음)
/(\*|\.)/g
: ' * ', ' . '
‘ ^ ‘ 는 줄의 시작을 의미함
-> /^[0-9]/g
: 줄의 첫글자가 숫자임을 나타냄
‘ $ ‘를 뒤에 붙이면 앞에 문자로 끝난다는 것을 의미함
-> /html%/g
: 줄의 마지막이 'html'로 끝남
‘ \w ’는 문자, 숫자, 를 나타낸다.
-> /\w/g
: 문자, 숫자, 를 나타냄
-> /[a-zA-Z0-9_]
와 똑같은 의미!
‘ \W ’ 는 문자, 숫자, 를 뺀 나머지를 의미한다
-> /\W/g
: 문자, 숫자, 를 제외한 나머지를 나타냄 ('공백', ' . ', ' : ', ' ! ', ' ? ' ...)
-> /[^a-zA-Z0-9_]
와 똑같은 의미!
‘ \d ‘ 는 숫자를 의미한다.
-> /\d/g
= /[0-9]/g
‘ \D ‘ 는 숫자를 뺀 나머지를 의미한다.
-> /\D/g
= /[^0-9]/g
‘ \s ‘ 는 공백(‘ ‘)을 의미한다.
-> /\s/g
: ' '
‘ \S ‘ 는 공백을 제외한 나머지를 의미한다.
-> /\S/g
: ' '을 제외한 나머지
‘ (?=) ‘ 는 꼬리말에 해당 문자가 있는지를 확인한다.
-> /\d+(?=PM)/g
: 'Date: 4 Aug 3PM'에서 '3'을 나타냄
-> (b(?=a)이면 b뒤에 a가 있으면 OK -> 결과값 ‘b’)
‘ (?!) ‘ 는 꼬리말에 없는지를 확인한다
-> /\d+(?!PM)/g
: 'Date: 4 Aug 3PM'에서 '4'을 나타냄
-> (b(?!a)이면 b뒤에 a가 없으면 OK -> 결과값 ‘b’)
‘ (?<=) ‘ 는 앞에 해당 문자가 있는지를 확인한다.
-> /(?<+\$)\d+/g
: '$5' 처럼 앞에 $표시가 있는 숫자
-> 'Product Code: 1064 Price: $5' 에서 '$5'를 나타냄
‘ (?<!) ‘ 는 앞에 해당 문자가 없는지를 확인한다.
-> /(?<!\$)\d+/g
: 앞에 $표시가 없는 숫자
-> 'Product Code: 1064 Price: $5' 에서 '1064'를 나타냄
‘ /g ‘ 는 전체 범위에서 탐색한다.
‘ /m ‘ 는 각 줄을 분리하는 역할을 한다.
‘ /i ‘ 는 대소문자 구분을 하지 않는다
-> 각각 g, m, i 는 같이 사용할 수 있다( ‘ /gm ’, ‘ /gmi ’처럼..)
정규표현식은 기본값으로 greedy 방식을 택한다. (조건에 맞는 끝까지)
-> /.*r/g
: 'ber beer beeer beeeer'에서 'ber beer beeer beeeer' 모두를 나타낸다.
Greedy 방식이 아닌 Lazy 방식을 택하려면 * 뒤에 ? 를 붙여준다.
-> /.\*?r/g
: 'ber beer beeer beeeer'에서 'ber' 하나만을 나타낸다.