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])$");
// メールアドレスのパターン
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;
}
}