매칭기호 | 설명 |
---|---|
x | 문자 x |
\\ | 백슬러쉬 문자 표현 |
\0n | 8진수문자. 8진수 0n을 표현한 문자 (0 <= n <=7) |
\0nn | 8진수문자. 8진수 0n을 표현한 문자 (0 <= n <=7) |
\0mnn | 8진수문자. (0 <= m <= 3, 0 <= n <= 7) |
\xhh | 16진수 문자. 0xhh hh는 16진수 |
\uhhh | 16진수 문자 0xhhhh |
\t | 탭(tab), (\u0009) |
\n | 개행문자, (\u000A) |
\r | 캐리지리턴문자, (\u000D) |
\f | 종이보내기문자 (\u000C) |
\a | 경고벨 문자 (\u0007) |
\e | escape 문자 (\u001B) |
\cx | x에 대응하는 제어문자를 나타냄 |
매칭기호 | 설명 |
---|---|
. | 임의의 문자 |
\d | 숫자 [0-9] |
\D | 숫자이외 [^0-9] |
\s | 공백문자 [\t\n\x0B\f\r] |
\S | 위 공백문자 이외 [^\s] |
\w | 영어단어표현 [a-zA-Z_0-9] |
\W | 영어단어외 표현 [^\w] |
. ( ) [ ] ^ $ \ | \. \( \) \[ \] \^ \$ \\ 좌측 문자는 \를 앞에 붙여 escape... |
※ 영어단어는 (a-z, A-Z, 0-9, _ , Unicode문자)
매칭기호 | 설명 |
---|---|
^ | 행의 맨앞 |
$ | 행의 맨끝 |
\b | 단어의 경계(영어단어의 경계 (□Where□is□your□school□?) 위에서는 □가 표현하는 것이 단어의 경계가 된다. String regex = "\\bsch"; 의 경우 위 빨강을 표현한다. |
\B | 단어이외의 경계 |
\A | 문자열(입력) 맨앞 ( ^와 다른점은 문자열에 개행문자 포함여부와 관계없이 multi라인 문자열에도 맨 처음만 확인 |
\G | 이전에 일치한 끝 |
\Z | 맨뒤에 행끝기호가 있을경우, 그것을 제외한 입력의 끝 |
\z | 입력의 끝 |
기호 | 설명 |
---|---|
. | 개행문자를 제외한 임의의 문자 .+ : 임의의 문자열 |
* | 바로전 1문자가 0회 이상 반복 또는 일치하는 경우 abc* : ab, abc, abcccc, abxx 는 일치, axb 는 불일치 |
^ | 행의 맨앞 ^[0-9] : 행의 맨 앞이 숫자(0~9)로 시작하는 것 |
$ | 행의 끝 [0-9]$ : 행의 끝이 숫자로 끝나는 것 |
+ | 바로전의 문자가 1회이상 반복 또는 일치 abc+ : abc, abcccc 는 일치, ab, abxxx, axb 는 불일치 |
? | 바로전 문자가 없거나(0) 1개일 경우 abc? : ab, abc, abcccc 는 일치 |
[ ] | 대괄호내 임의 1문자와 일치 안의 하이픈- 은 범위를 나타냄 : [a-z] a~z까지중 1개와 일치 ^ 는 불일치 : [^A-Z] 영어 대문자 이외의 것을 표시 |
{ } | 중괄호내 숫자의 반복횟수와 일치 {n} :앞의 문자의 n회 반복과 일치 {,n} : 앞의 문자의 n회 이하 반복과 일치 {m,} : 앞의 문자의 m회 이상 반복과 일치 {m,n} : 앞의 문자의 m회 이상 n회이하 반복과 일치 |
| | 파이프라인 or 과 같다 어느 한쪽에 일치 abc|def : abc나 def 둘중 하나에 일치 |
( ) | 괄호를 그룹화 한다. 일치한 내용을 참조할 수 있다. |
최단일치 가장 가까운이라기 보다는 가장 왼쪽을 기준으로 맞춰나가는 의미를 지닌다.
ex ) <emunhi> 를 패턴 검색할려고 하는데 아래와 같은 문자열이 있는 경우
<<<emunhi>>>
이를 패턴 검색에서 최단일치인 <.*?> 와 같은 패턴을 사용할 경우 결과는
result : <<<emunhi> 가 된다.
만약 원하는 답을 원하기 위해서는 '<' 와 '>' 사이에 '<' 와 '>'가 없는 패턴을 검색하면 된다.
"<<<emunhi>>>".match(/<[^<>]*>/)[0]
result : <emunhi>
최장일치 | 최단일치 | 설명 |
---|---|---|
x* | x*? | 0문자 이상 반복되는 x |
x+ | x+? | 1문자 이상 반복되는 x |
x? | x?? | 0 또는 1문자 x |
x{n} | x{n}? | x 가 n회 반복 |
x{n,} | x{n,}? | x 가 n회 이상 반복 |
x{,m} | x{,m}? | x 가 m회 이하 반복 |
x{n,m} | x{n,m}? | x 가 n ~ m 사이 반복 |
기호 | 설명 |
---|---|
OR : [abc] | 일반적으로 a 또는 b 또는 c 셋중 하나 [a-cx-z] : a,b,c, x,y,z 중에 하나 위와 동일한 건 [[a-c]x-z] , [a-c[x-z]], [[a-c][x-z]] |
AND : [a-z&&c-e] | a~z 이면서 c~e 인 것 즉 c~e와 동일 [a-z&&[^dex]] : a~z중에 d,e,x를 제외한 소문자 [a-z&&[e-k]] : e~k를 제외한 소문자 |
소문자 : (?i) | 앞에 (?i)를 추가하면 대소문자를 구분하지 않는다. |
전방참조안함 : (?:X) | 그룹화시 인덱스를 부여안해 자원을 낭비하지 않게....(세미콜론) m.group(n) 에 포함되지 않는다. |
숫자만 : ^[0-9]*$ | 0~9로 시작하고 0회이상 반복하면 0~9로 끝나는 것 |
영문자만 : ^[a-zA-Z]*$ | 위와 동일 |
한글만 : ^[가-힣]*$ | |
영수,언더바 : ^[a-zA-Z_0-9]*$ |
용도 | 샘플 | 설명 |
---|---|---|
이메일 | ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$ | 1개이상 영수시작 + @ + 1개이상영수끝 |
숫자(자릿수) | \d{2,10} | 2자리~10자리의 숫자 |
금액 3자리 콤마 | -?([1-9]\d{0,2}(,\d{3})*|[1-9]\d{0,}) -?([1-9]\\d{0,2}(,\\d{3})*|[1-9]\\d{0,}) | 1,000,000 등을 구분 (좌 아래는 Java String) |
자릿수 + 소숫점2 | -?([1-9]\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2})?) | |
우편번호(- 가부포함) | \d{3}-?\d{4} | xxx-yyy 또는 xxxyyy |
Email address | [a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)* | |
IP Address | ((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d) | |
그룹은 열린괄호 ( 를 왼쪽부터 오른쪽으로 숫자를 세어 붙인 것이 된다. (0,1,2,...)
ex) ( ( A ) ( B ( C ) ) )