정규 표현식 | 숫자 |
---|---|
^[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(",|:");
}
📂 참고자료