Java StringValidator 문자열 유효성 체크
문자열 유효성 체크 예제이다.
import java.io.UnsupportedEncodingException;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
* 문자열 유효성 체크
*
* @author kimkc
*/
public class StringValidator {
// IP 주소 패턴
private static final Pattern PATTERN_IPADDRESS = Pattern
.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
// Email 주소 패턴
private static final Pattern PATTERN_EMAIL = Pattern.compile("[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})+");
// 비밀번호 패턴 (문자, 숫자, 특수문자의 조합으로 9~16자리)
private static final Pattern PATTERN_PW = Pattern
.compile("(?=([a-zA-Z].*[0-9].*[^0-9a-zA-Z].*)|([a-zA-Z].*[^0-9a-zA-Z].*[0-9].*)|([0-9].*[a-zA-Z].*[^0-9a-zA-Z].*)|([0-9].*[^0-9a-zA-Z].*[a-zA-Z].*)|([^0-9a-zA-Z].*[a-zA-Z].*[0-9].*)|([^0-9a-zA-Z].*[0-9].*[a-zA-Z].*)$).{9,16}");
// 추가 비밀번호 패턴 (연속된 문자 3개 이상 금지)
private static final Pattern PATTERN_SAME = Pattern.compile(".*(.)\\1\\1.*");
/**
* 엔코딩이 유효한지 체크
*
* @param value
* @return
*/
public static boolean isNotValidEncoding(final String value) {
return !isValidEncoding(value);
}
/**
* 엔코딩이 유효한지 체크
*
* @param value
* @return
*/
public static boolean isValidEncoding(final String value) {
boolean result = true;
try {
new String("".getBytes(), value);
} catch (UnsupportedEncodingException e) {
result = false;
}
return result;
}
/**
* 입력 받은 IP주소가 정규식 표현이 맞는치 체크
*
* @param ip
* @return s
*/
public static boolean isIPAddress(final String ip) {
return PATTERN_IPADDRESS.matcher(ip).matches();
}
/**
* 입력 받은 이메일 주소가 정규식 표현이 맞는치 체크
*
* @param email
* @return
*/
public static boolean isEmail(final String email) {
return PATTERN_EMAIL.matcher(email).matches();
}
/**
* 문자 조합 규칙 체크
*
* @param password
* @return
*/
public static boolean isPasswordCharacter(final String password) {
return PATTERN_PW.matcher(password).matches();
}
/**
* 3개 이상 동일한 문자 패턴 체크
*
* @param password
* @return
*/
public static boolean isSamePattern(final String password) {
return PATTERN_SAME.matcher(password).matches();
}
/**
* 3개 이상 연속된 문자 패턴 체크
*
* @param password
* @return
*/
public static boolean isContinuousPattern(final String password) {
if (password == null)
return false;
int count = 0;
char c = 0;
char before = 0;
for (int i = 0; i < password.length(); i++) {
c = password.charAt(i);
if (c >= 48 && c <= 57 && (before + 1 == c)) {
count++;
if (count >= 2)
return true;
} else {
count = 0;
}
before = c;
}
return false;
}
/**
* 정규식 표현이 유효한지 체크
*
* @param regex
* @return
*/
public static boolean isInvalidRegularExpression(String regex) {
try {
Pattern.compile(regex);
} catch (PatternSyntaxException e) {
return false;
}
return true;
}
}
최종 수정 : 2016-04-18