💡 정규표현식이란?
- 정규표현식(Regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 '형식언어'이다.
- 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색을 위해 지원하고 있다.
💡 정규표현식의 사용
package patternCheck;
import java.util.regex.Pattern;
public class Main{
public static void main(String[] args) {
boolean 변수명 = Pattern.matches(String arg0, charSequence arg1);
}
}
- arg0은 정규표현식 문자열이다.
- arg1은 형식을 검사받기 위한 내용이다.
- 즉, 위의 기능은 arg1이 arg0의 형식에 맞는지를 검사하고 결과를 boolean형으로 리턴한다.
💡 정규표현식 문자열
숫자 모양에 대한 형식 검사
"^[0-9]*$"
영문으로만 구성되었는지에 대한 형식 검사
"^[a-zA-Z]*$"
한글로만 구성되었는지에 대한 형식 검사
"^[ㄱ-ㅎ가-힣]*$"
영문과 숫자로만 구성되었는지에 대한 형식 검사
"^[a-zA-Z0-9]*$"
한글과 숫자로만 구성되었는지에 대한 형식 검사
"^[ㄱ-ㅎ가-힣0-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}$"
"-"없이 주민번호에 대한 글자수 및 뒷자리 첫글자가 1~4의 범위에 있는지에 대한 검사
"^\\d{6}[1-4]\\d{6}"
💡 정규표현식을 이용한 메소드 만들기
package patternCheck;
import java.util.regex.Pattern;
public class RegexHelper {
private static RegexHelper regexHelper;
public static RegexHelper getInstance() {
if(regexHelper == null) {
regexHelper = new RegexHelper();
}
return regexHelper;
}
public static void feeInstance() {
regexHelper = null;
}
private RegexHelper() {}
public boolean isValue(String str) {
boolean result = false;
if( str != null ) {
result = !str.trim().equals("");
}
return result;
}
public boolean isNum( String str ) {
boolean result = false;
if( isValue(str) ) {
result = Pattern.matches("^[0-9]*$", str);
}
return result;
}
public boolean isEng( String str ) {
boolean result = false;
if( isValue(str) ) {
result = Pattern.matches("^[a-zA-Z]*$", str);
}
return result;
}
public boolean isKor( String str ) {
boolean result = false;
if( isValue(str) ) {
result = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", str);
}
return result;
}
public boolean isEngNum( String str ) {
boolean result = false;
if( isValue(str) ) {
result = Pattern.matches("^[a-zA-Z0-9]*$", str);
}
return result;
}
}