Regular expression)
은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어이다.
- 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.
boolean java.util.regex.Pattern.matches( String arg0, CharSequence arg1 );
arg0
: 정규표현식 문자열arg1
: 형식을 검사받기 위한 내용- java.util.regex는 Import로 생략할 수 있다.
표현식 | 의미 | 표현식 | 의미 |
---|---|---|---|
^ | 문자열의 시작 | $ | 문자열의 종료 |
x+ | x가 한 번 이상 반복된다. | x* | x가 0번 이상 반복된다. |
x? | x는 존재할 수도, 존재하지 않을 수도 있다. | x | y | x또는 y가 존재한다. |
(x) | x를 그룹으로 처리한다. | (x)(y) | 그룹의 집합을 의미한다. |
(x)(?:y) | 그룹 집합으로 관리하지 않는 예외를 표현한다. | x{n} | x가 n번 반복된다. |
x{n,} | x가 n번 이상 반복된다. | x{n,m} | x가 n번 이상 m번 이하 반복된다. |
[xy] | x와 y중 하나 | [^xy] | x와 y를 제외한 문자 |
[x-z] | range로, x와 z사이의 문자 | \^ | escape문자로 ^를 문자로 사용한다. |
\b | word boundary 문자와 공백 사이의 문자 | \B | non word boundary 문자와 공백 사이가 아닌 문자 |
\d | digit 숫자 | \D | non digit 숫자 아닌 것 |
\s | space 공백 문자 | \S | non space 공백 문자가 아닌 것 |
\t | tab 탭 | \v | vertical tab 수직 탭 |
\w | word 알파벳, 숫자, _중의 한 문자 | \W | non word, word가 아닌 문자 |
flag
정규표현식을 생성할 때 flag
를 사용해 기본 검색 설정을 변경할 수 있다.
flag
는 생략 가능하다.
flag 의미 i Ignore case - 대소문자를 구분하지 않는다. g global - 대상 문자열 내 모든 패턴을 검색한다. m Multi line - 다중 라인 문자열도 검색한다. 모든 ^와 $가 인식된다.
모든 용어를 옮겨 놓지는 않았다.
- 작성 참고 문서
hamait.tistory.com
offbyone.tistory.com
^[0-9]*$
- 숫자로만 구성되었는지에 대한 형식 검사
^[a-zA-Z]*$
- 영문으로만 구성되었는지에 대한 형식 검사
^[ㄱ-ㅎ가-힣]*$
- 한글로만 구성되었는지에 대한 형식 검사
^[a-zA-Z0-9]*$
- 영문과 숫자로만 구성되었는지에 대한 형식 검사
^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$
- 이메일 형식인지에 대한 검사.
"아이디@도메인"의 형식을 충족해야 한다.
^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$
-
없이 핸드폰번호인지에 대한 형식검사.
^\\d{2,3}\\d{3,4}\\d{4}$
-
없이 전화번호인지에 대한 형식검사.
각 부분에 대한 자리수도 충족시켜야 한다.
^\\d{6}[1-4]\\d{6}
-
없이 주민번호에 대한 글자수 및 뒷자리 첫글자가 1~4의 범위에 있는지에 대한 검사