정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴이다. 정규표현식 나올 때마다 구글링하지말고 내 거 보기 위해 정리해 본다.

| Regex | 설명 |
|---|---|
| . | 어떤 문자 1개를 의미 |
| ^regex | ^다음 regex로 line을 시작하는지 |
| regex$ | $ 앞의 regex가 line의 마지막으로 끝나는지 |
| [abc] | a,b,c 중 문자 1개 |
| [abc][vz] | a,b,c 중에 문자 1개와 v,z 중에 문자 1개의 조합 |
| [^abc] | a,b,c를 제외한 문자 1개 |
| [a-d1-7] | a-d,1-7 사이의 문자 1개 |
| XlZ | X 또는 Z |
| \d | 0-9 사이의 숫자, [0-9]와 동일 |
| \D | 숫자가 아닌 어떤 문자, [^0-9]와 동일 |
| \s | whitespace 1개, [\t\n\x0b\r\f]와 동일 |
| \S | whitespace를 제외한 문자 |
| \w | Alphanumeric(alphabet,숫자) 문자, [a-zA-Z_0-9]와 동일 |
| \W | Alpanumeric을 제외한 문자 |
| \s+ | whitespace를 제외한 여러 문자 |
| \b | 단어의 공백을 찾는다 |
| * | 0회 이상 반복 |
| + | 1회 이상 반복 |
| ? | 0 or 1회만 |
| {X} | X회 이상 반복 |
| {X,Y} | X-Y 사이의 수만큼 반복 |
| *? | 가장 적게 일치하는 패턴을 찾음 |
// 이메일
String emailRegExp = "/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i";
// 비밀번호
String pwRegExp = "/^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,16}$/";
// 아이디
String idRegExp = "/^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{8,16}$/";