1. 정규표현식 개념
표현식 | 설명 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 (필수 입력이며 문자의 종류는 가리지 않음, 역슬래시(\)는 넣을수 없다) |
* | 앞의 문자가 없을수도, 무한히 많을 수 있음 |
+ | 앞 문자가 하나 이상 존재함 |
? | 앞 문자가 없거나 하나 있음 |
[] | 문자의 집합이나 범위를 나타내고 두 문자 사이는 -기호로 범위를 나타냄. []내에서 ^가 앞에 존재하면 not 을 의미함 ex) [0-9] 는 0~9 사이의 문자를 나타냄 |
{} | 횟수, 또는 범위를 나타냄 |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
\ | 정규표현식 역슬래시(\)는 확장 문자 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미 |
(?i) | 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 |
2. 정규표현식 적용 예제
실무에서 사용할법한 예제들입니다.
회원가입에 사용되는 정규식부터 본인인증, 결제 등 다양한 곳에서 활용 가능합니다.
// 숫자 검사기
public boolean isNumeric(String str) {
return Pattern.matches("^[0-9]*$", str);
}
// 영어 검사기
public boolean isAlpha(String str) {
return Pattern.matches("^[a-zA-Z]*$", str);
}
// 한국어 혹은 영어 검사기
public boolean isAlphaNumeric(String str) {
return Pattern.matches("[a-zA-Z0-9]*$", str);
}
// 한국어 검사기
public boolean isKorean(String str) {
return Pattern.matches(".*[ㄱ-ㅎㅏ-ㅣ가-힣0-9!?()]+.*", str.replace("\n",""));
}
// 대문자 검사기
public boolean isUpper(String str) {
return Pattern.matches("^[A-Z]*$", str);
}
// 소문자 검사기
public boolean isDowner(String str) {
return Pattern.matches("^[a-z]*$", str);
}
// 이메일 검사기
public boolean isEmail(String str) {
return Pattern.matches("^[a-z0-9A-Z._-]*@[a-z0-9A-Z]*.[a-zA-Z.]*$", str);
}
// URL 검사기 (Http, Https 제외)
public boolean isURL(String str) {
return Pattern.matches("^[^((http(s?))\\:\\/\\/)]([0-9a-zA-Z\\-]+\\.)+[a-zA-Z]{2,6}(\\:[0-9]+)?(\\/\\S*)?$",
str);
}
// phone number checker
// xxx-xxx-xxxx (형식만 비교)
// - 은 없어야 함.
public boolean isMob(String str) {
return Pattern.matches("^\\d{2,3}\\d{3,4}\\d{4}$", str);
}
// 일반 전화 검사기
public boolean isPhone(String str) {
return Pattern.matches("^\\d{2,3}\\d{3,4}\\d{4}$", str);
}
// IP 검사기
public boolean isIp(String str) {
return Pattern.matches("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})", str);
}
// 우편번호 검사기
public boolean isPost(String str) {
return Pattern.matches("^\\d{3}\\d{2}$", str);
}
// 주민등록번호 검사기
public boolean isPersonalID(String str) {
return Pattern.matches("^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$", str);
}
// 한자를 포함하고 있는지 여부
public boolean containsChineseCharacters(String str){
String regEx = ".*[\u2e80-\u2eff\u31c0-\u31ef\u3200-\u32ff\u3400-\u4dbf\u4e00-\u9fbf\uf900-\ufaff].*";
return str.matches(regEx);
}
// 신용 카드 양식(xxxx-xxxx-xxxx-xxxx)
public boolean isCreditCard(String cardNumber) {
return Pattern.matches("((5[1-5]\\d{14})|(4\\d{12}(\\d{3})?)|(3[47]\\d{13})|(6011\\d{12})|((30[0-5]|3[68]\\d)\\d{11}))", cardNumber);
}
// 신용카드 유효기간 양식
public boolean isExpireDate(String expireDate) {
return Pattern.matches("[0-9]{2}(?:0[1-9]|1[0-2])", expireDate);
}
'Language > Java' 카테고리의 다른 글
[Java]네이버 블로그 검색 API 적용 및 예제 (0) | 2020.09.10 |
---|---|
[Java]SHA256 암호화(Encrypt) 정리 및 예제 (0) | 2020.09.10 |
[Java]생성자와 소멸자, this키워드 개념 정리 및 예제 (0) | 2020.09.07 |
[Java]객체와 메모리의 관계, null과 NullPointerException의 정리 및 예제 (0) | 2020.09.06 |
[Java]접근제어자(Access Modifier) 개념 정리 (0) | 2020.08.26 |