정규 표현식의 용어들정규 표현식에서 사용되는 기호를 Meta문자라고 표현한다.
표현식에서 내부적으로 특정 의미를 가지는 문자를 말한다.
다 외우지 말고 자주 접하는 식 몇 개 만 알아두자
^x
x$
.x
x+
x?
x*
x|y
(x)
(x)(y)
(x)(?:y)
x{n}
x{n,}
x{n,m}
Meta 문자들 중에서 좀 더 특수하게 사용되는 문자들이 존재한다.
[]
는 내부에 지정된 문자열의 범위 중에서 한 문자만을 선택하다는 특수한 의미를 가진다. 그리고 내부에서 Meta문자를 사용하면 다른 의미를 가지고 동작할 수 있으므로 잘 확인하고 사용해야 한다.
[xy]
[^xy]
[x-z]
\^
\b
\B
\d
\D
\s
\S
\t
\v
\w
\W
정규표현식을 사용할 때 Flag 라는 것이 존재하는데 Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 된다. Flag는 다음과 같은 것들이 존재한다.
g
i
m
/[0-9]/g
전체에서 0~9사이에 아무 숫자 '하나' 찾는다.
/[to]/g
전체에서 t 혹은 o 를 모두 찾는다.
/filter/g
전체에서 f 따로 i 따로 찾는게 아니라 'filter' 라는 단어에 매칭되는것을 찾는다.
/\b(?:(?!to)\w)+\b/g
전체에서 'to' 라는 단어를 포함하는 단어를 빼고 다른 단어를 매칭한다.
ex) "Tutorial" 도 제외된다.
\b(?!\bto\b)\w+\b
전체에서 'to' 라는 단어를 빼고 다른 단어 매칭한다.
ex) "Tutorial" 제외되지 않는다.
이메일
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i
- '시작을' 0~9 사이 숫자 or a-z A-Z 알바펫 아무거나로 시작하고
- 중간에 - _ . 같은 문자가 있을수도 있고 없을수도 있으며
- 그 후에 0~9 사이 숫자 or a-z A-Z 알바펫중 하나의 문자가 없거나 연달아 나올수 있으며
- @ 가 반드시 존재하고
- 0-9a-zA-Z 여기서 하나가 있고
- 중간에 - _ . 같은 문자가 있을수도 있고 없을수도 있으며
- 그 후에 0~9 사이 숫자 or a-z A-Z 알바펫중 하나의 문자가 없거나 연달아 나올수 있으며
- 반드시 . 이 존재하고
- [a-zA-Z] 의 문자가 2개나 3개가 존재
- 이 모든것은 대소문자 구분하지 않는다.
전화번호
/^\d{3}-\d{3,4}-\d{4}$/
- 시작을 숫자 3개로하며
- 중간에 하이픈
-
하나 존재- 숫자가 3~4개 존재하며
- 하이픈 하나 존재
- 숫자 4개로 끝남
휴대폰 번호
/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/
- 시작을 숫자 01로 시작하고 그 후에 0,1,6,7,8,9 중에 하나가 나올수도 있으며
- 하이픈
-
이 하나 존재할수도 있으며- 숫자 3~4개 이어지고
- 또 하이픈
-
이 하나 존재할수도 있으며- 숫자 4개가 이어진다.