Java

[JAVA][정규식]전화번호 체크 & 숫자체크 & 이메일 체크

정규식 기본문법

표현식 설명
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자 (문자의 종류 가리지 않음)
단,  는 넣을 수 없음
*  앞 문자가 없을 수도 무한정 많을 수도 있음
+  앞 문자가 하나 이상
? 앞 문자가 없거나 하나있음
[] 문자의 집합이나 범위를 나타내며 두 문자 사이는 – 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다.
{} 횟수 또는 범위를 나타낸다.
() 소괄호 안의 문자를 하나의 문자로 인식
 | 패턴 안에서 or 연산을 수행할 때 사용
 s 공백 문자
S 공백 문자가 아닌 나머지 문자
w 알파벳이나 숫자
W 알파벳이나 숫자를 제외한 문자
d 숫자 [0-9]와 동일
D 숫자를 제외한 모든 문자
정규표현식 역슬래시()는 확장 문자
 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미
(?i) 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음

 

정규식 Pattern 주요 메서드

메서드 설명
compile(String regex) 정규표현식의 패턴을 작성
matches(String regex, CharSequence input) 정규표현식의 패턴과 문자열이 일치하는지 체크.
일치할 경우 true, 일치하지 않는 경우 false를 리턴.

 

정규식 Matcher 주요 메서드

메서드 설명
matches() 정규표현식의 패턴과 문자열이 일치하는지 체크
일치할 경우 true, 일치하지 않는 경우 false를 리턴
find() 정규표현식의 패턴과 문자열이 일치하는지 체크합니다 그리고 그 위치로 이동
일치할 경우 true, 일치하지 않는 경우 false를 리턴
find(int start) start위치부터 find() 작업을 수행
group() 매칭된 부분 중 첫 번째 그룹을 리턴
group(int group) 매칭된 부분중 group번째 그룹을 리턴
groupCount() 매칭된 group의 전체 갯수를 리턴

 

전화번호 체크 

public static String getStringToPhoneNumber(String src) {
   if(src.startsWith("02")){
     return src.replaceAll("([0-9]{2})([0-9]+)([0-9]{4})", "$1-$2-$3");
   }else if(src.length() == 8) { //1600-5588 case
     return src.replaceAll("([0-9]{4})([0-9]{4})", "$1-$2");
   }else {
     return src.replaceAll("([0-9]{3})([0-9]+)([0-9]{4})", "$1-$2-$3");
   }
}

숫자인지 체크 

public static boolean invalidNumberFormat(String src) {
   return Pattern.matches("[0-9]{1,11}", src);
}
String str = "1249f0fddfs3456a";
Pattern pattern = Pattern.compile("^[0-9]*$");
Matcher matcher = pattern.matcher(str);
                
if(matcher.find()) {
    System.out.println(Integer.parseInt(str));
} else {
    System.out.println("숫자만 입력 가능합니다.");
}

 

이메일주소 체크

public static boolean invalidEmailFormat(String src) {
    return Pattern.matches("[a-zA-Z0-9\+\.\_\%\-\+]{1,256}" +
    "\@" +
    "[a-zA-Z0-9][a-zA-Z0-9\-]{0,64}" +
    "(" +
    "\." +
    "[a-zA-Z0-9][a-zA-Z0-9\-]{0,25}" +
    ")+", src);
}

 

영어 문자와 숫자만 허용하는 경우

boolean flag = Pattern.matches("^[a-zA-Z0-9]*$", strInput); 

 

영어와 문자를 반드시 포함해야하는 경우 (최소 8~30자 체크)

boolean isFalg = Pattern.matches("^(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}$", src);

 

영문으로 시작하거나 또는 영문+숫자 조합의 아이디 체크


import java.util.regex.Pattern;

public class CodeTest {
	public static boolean invalidUserIdFormat(String src) {
		return Pattern.matches("^[a-zA-Z]+[a-zA-Z0-9]{2,30}$", src);
		
//		return Pattern.matches("^(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}$", src);
	}

	public static void main(String[] args) {
		boolean isVal = invalidUserIdFormat("1ffd");
		System.out.println(isVal);
		
		boolean isVal2 = invalidUserIdFormat("koRea1");
		System.out.println(isVal2);				
		
		boolean isVal3 = invalidUserIdFormat("korea1S11");
		System.out.println(isVal3);		
	}

}

 

자바 자주 사용하는 정규식

숫자만 ^[0-9]*$
영문자만 ^[a-zA-Z]*$
한글만  ^[가-힣]*$
영어 & 숫자만 ^[a-zA-Z0-9]*$
E-Mail ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
파일확장자
^\S+.(?i)(txt|pdf|hwp|xls)$
휴대폰  ^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}
IP 주소 ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3})
비밀번호 (숫자, 문자 포함의 6~12자리 이내) ^[A-Za-z0-9]{6,12}$
비밀번호 (숫자, 문자, 특수문자 포함 8~15자리 이내) ^.*(?=^.{8,15}$)(?=.*d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$

 

[REFERENCE]

 

Leave a Reply

error: Content is protected !!