[ 자바 정규 표현식(RegExpress) ]
자바 정규표현식 사용법)
boolean result = Pattern.matches("정규표현식", 검증데이터);
"정규표현식"에는 "^[0-9a-zA-z]*$" 과 같은 정규표현식이 들어가고, 검증데이터는 해당 정규표현식이 맞는지 확인할 데이터가 들어간다.
결과는 true/false로 return 된다.
- 다음은 정규표현식 문법)
표현식 | 설명 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나있음 |
[] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다. |
{} | 횟수 또는 범위를 나타낸다. ex) {2,3} : 2글자에서3글자 {2}2글자 |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
\ | 정규표현식 역슬래시(\)는 확장 문자 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미 |
(?i) | 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 |
위의 문법 정보를 가지고 몇가지 연습을 해보자.
-> 먼저 데이터가 문자열로 넘어온다면 문자열 시작 : ^, 문자열 끝 : $ 로 감싸주면 될 것이고, 문자열이 아니면 안쓰면 된다.
EX)
1. 숫자데이터만
-> ^[0-9]*$ 또는 ^\d*$
// "234" 이런식으로 문자열로 숫자가 감싸져 넘어오는 경우를 체크할 수 있다. 234 숫자 타입으로 넘길 경우 [0-9]*로만 해도 됨.
2. 영문자만
-> ^[a-zA-z]*$
// [] 안의 패턴은 and일 경우 ,로 구분할 필요 없이 쭉 이어쓸 수 있다.
3. 한글만
-> ^[가-힣]*$
4. 영어&숫자만
-> ^[a-zA-Z0-9]*$
5. E-MAIL(이메일) : ex) dudfhd705@gmail.com
-> ^[a-zA-Z0-9]+\@[a-zA-Z]+\.[a-zA-Z]+$
// 사이에 *가 아니라 +가 와야하는 이유는 해당 부분은 한글자 이상 반드시 있어야함으로 *는 없거나 1글자 이상이기 때문에 없을 수도 있어서
6. 핸드폰 : ex) 010-3456-2361, 010 - 3456 - 2361, 010 3456 2361, 01034562361
-> ^01(0|1|[6-9])$\s?\-?\s?(\d{3,4})\s?\-?\s?\d{4}$
// \s? : 공백이 올수도 있고 안올 수도 있고 \-? : - 특수문자가 올수도 있고 안올수도 있고
7. 주민등록번호
900317-1033334라고 가정
-> \d{6}\-[1-4]\d{6}
8. IP 주소
196.168.1.213 라고 가정
-> \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
그럼 실제로 자바에서 Email 검증을 위한 코드 Ex)
String regEx = "^[a-zA-Z0-9]+\\@[a-zA-Z]+\\.[a-zA-Z]+$";
boolean regCheck = false;
regCheck = Pattern.matches(regEx, "dudfhd705@gmail.com");
if(regCheck) { // true
// 이메일 형식이 맞는 경우
}else { // false
// 이메일 형식이 아닌 경우
}
'스터디 > Java' 카테고리의 다른 글
스트림(Stream) - Java8 (0) | 2019.07.11 |
---|---|
직렬화(serializable)와 serialVersionID란? (0) | 2018.10.22 |