| 정규 표현식 | 숫자 | 
|---|---|
| ^[0-9]*$ | 숫자 | 
| ^[a-zA-Z]*$ | 영문자 | 
| ^[가-힣]*$ | 한글 | 
| \w+@\w+\.\w+(\.\w+)? | 이메일 | 
| ^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 | 
| \d{6} - [1-4]\d{6} | 주민등록번호 | 
| ^\d{3}-\d{2}$ | 우편번호 | 
첫번째 매개값은 정규표현식이고 두번째 매개값은 검증 대상 문자열이다.
검증 후 대상문자열이 정규표현식과 일치하면 true, 그렇지 않다면 false값을 리턴한다.
import java.util.regex.Pattern;
public class RegexExample {
	public static void main(String[] args)  {
    
            String pattern = "^[0-9]*$"; //숫자만
            String val = "123456789"; //대상문자열
        
            boolean regex = Pattern.matches(pattern, val);
            System.out.println(regex);
    }
}
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
	public static void main(String[] args)  {
            Pattern pattern = Pattern.compile("^[a-zA-Z]*$"); //영문자만
            String val = "abcdef"; //대상문자열
	
            Matcher matcher = pattern.matcher(val);
            System.out.println(matcher.find());
	}
}
import java.util.regex.Pattern;
public class RegexExample {
	public static void main(String[] args)  {
          String name = "홍길동";
          String tel = "010-1234-5678";
          String email = "test@naver.com";
         
          //유효성 검사
          boolean name_check = Pattern.matches("^[가-힣]*$", name);
          boolean tel_check = Pattern.matches("^01(?:0|1|[6-9])-(?:\\d{3}|\\d{4})-\\d{4}$", tel);
          boolean email_check = Pattern.matches("\\w+@\\w+\\.\\w+(\\.\\w+)?", email);
          //출력
          System.out.println("이름 : " + name_check);      // true
          System.out.println("전화번호 : " + tel_check);    // true
          System.out.println("이메일 : " + email_check);   // true
    }
}
| 표현식 | 설명 | 
|---|---|
| ^ | 문자열 시작 | 
| $ | 문자열 종료 | 
| . | 임의의 한 문자 (단 ₩은 넣을 수 없음) | 
| * | 앞 문자가 없을 수도 무한대로 많을 수도 있다. | 
| + | 앞 문자가 하나 이상 | 
| ? | 앞 문자가 없거나 하나 있다. | 
| [ ] | - 문자의 집합이나 범위를 나타낸다.  - 두 문자 사이는 - 기호로 범위를 나타낸다. - [] 내에서 ^가 선행하여 존재하면 not을 나타낸다.  | 
| { } | 횟수 혹은 범위를 나타낸다. | 
| ( ) | 소괄호 안의 문자를 하나의 문자로 인식 | 
| ₩ | 정규표현식에서 ₩는 확장문자 (역슬래시 다음에 일반 문자가 오면 특수 문자로 취급하고, 특수문자가 오면 그 문자 자체를 의미한다.) | 
| ₩b | 단어의 경계 | 
| ₩B | 단어가 아닌 것에 대한 경계 | 
| ₩A | 입력의 시작 부분 | 
| ₩G | 이전 매치의 끝 | 
| ₩Z | 입력의 끝이지만 종결자가 있는 경우 | 
| ₩z | 입력의 끝 | 
| ₩s | 공백 문자 | 
| ₩S | 공백 문자가 아닌 나머지 문자 | 
| ₩w | 알파벳이나 숫자 | 
| ₩W | 알파벳이나 숫자를 제외한 문자 | 
| ₩d | 숫자 [0-9]와 동일 | 
| ₩D | 숫자를 제외한 모든 문자 | 
| (?!) | 앞 부분에 (?!) 옵션을 넣어주면 대소문자를 구분하지 않는다. | 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.apache.logging.log4j.util.Strings.isBlank;
public class StringCalculator {
    public int add(String text) {
        if(isBlank(text)) return 0;
        return sum(toInts(split(text)));
    }
    private boolean isBlank(String text) {
        return text == null || text.isEmpty();
    }
    private String[] split(String text) {
        Matcher m = Pattern.compile("//(.)\n(.*)").matcher(text);
        if(m.find()) {
            String customDelimeter = m.group(1);
            return m.group(2).split(customDelimeter);
        }
        return text.split(",|:");
    }
📂 참고자료