package kadai1; import java.util.regex.*; public class Validator { /** * 行頭・行末の全角空白・半角空白をトリムする。 * @param s 文字列。 * @return トリムした文字列を返す。 */ public static String trimBlanks(String s) { String result; result = s.replaceAll("^[\\s ]*", "").replaceAll("[\\s ]*$", ""); return result; } /** * ひらがなカタカナ漢字以外の字種が含まれているか * @param s 文字列 * @return 他の字種が含まれている場合にtrueを返す。 */ public static boolean isInvalideName(String s) { //u3005:佐々木の々は漢字ではないらしいが、ここでははじかないようにする。 Pattern p = Pattern.compile( "[^\\p{InHiragana}\\p{InKatakana}\\p{InCJKUnifiedIdeographs}\\u3005]"); Matcher m = p.matcher(s); return m.find(); } /** * 全角アルファベットを半角アルファベットに変換する。 * @param s 文字列。 * @return 変換した文字列を返す。 */ public static String toHarfsizeAlphabet(String s) { StringBuffer result = new StringBuffer(); for (int i=0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 'a' && c <= 'z') { c = (char) (c - 'a' + 'a'); } else if (c >= 'A' && c <= 'Z') { c = (char) (c - 'A' + 'A'); } result.append( c ); } return result.toString(); } /** * アルファベット以外の字種が含まれているか * @param s 文字列 * @return 他の字種が含まれている場合にtrueを返す。 */ public static boolean isInvalideYomiRoman(String s) { Pattern p = Pattern.compile("[^\\p{Upper}]"); Matcher m = p.matcher(s); return m.find(); } static String[] mobiledomain = { "@docomo.ne.jp$", // NTT ドコモ "@ezweb.ne.jp$", // KDDI au/TU-KA "@.*\\.ezweb.ne.jp$", // KDDI au/TU-KA "@softbank.ne.jp$", // ソフトバンク(Vodafone) "@d.vodafone.ne.jp$", // 北海道 "@h.vodafone.ne.jp$", // 東北 "@t.vodafone.ne.jp$", // 東京 "@c.vodafone.ne.jp$", // 東海 "@r.vodafone.ne.jp$", // 北陸 "@k.vodafone.ne.jp$", // 関西 "@n.vodafone.ne.jp$", // 中国 "@s.vodafone.ne.jp$", // 四国 "@q.vodafone.ne.jp$", // 九州 "@pdx.ne.jp$", // ウィルコム "@.*\\.pdx.ne.jp$", // ウィルコム //"@willcom.com$", // ウィルコム }; /** * 携帯メールのドメインが含まれているか * @param s トリム済み、メールアドレス形式検証済み、の文字列 * @return 含まれている場合にtrueを返す。 */ public static boolean isInvalideMailDomain(String s) { for (int i = 0; i < mobiledomain.length; i++) { Pattern p = Pattern.compile( mobiledomain[i] ); Matcher m = p.matcher(s); if ( m.find() ) return true; } return false; } /** * ひらがなカタカナ漢字ascii印字可能文字以外の字種が含まれているか * @param s 文字列 * @return 他の字種が含まれている場合にtrueを返す。 */ public static boolean isInvalideSchoolname(String s) { Pattern p = Pattern.compile( "[^\\p{InHiragana}\\p{InKatakana}\\p{InCJKUnifiedIdeographs}\\u3005\\p{Print}]"); Matcher m = p.matcher(s); return m.find(); } /** * 半角英数以外の字種が含まれているか、アルファベットと数字が混合されているか * @param s 文字列 * @return 他の字種が含まれている、またはアルファベットと数字が混合されていない場合にtrueを返す。 */ public static boolean isInvalidePassword(String s) { // 字種チェック { Pattern p = Pattern.compile("[^\\p{Alnum}]"); Matcher m = p.matcher(s); if ( m.find() ) return true; } boolean alpha; { Pattern p = Pattern.compile("[^\\p{Alpha}]"); Matcher m = p.matcher(s); alpha = m.find(); } boolean digit; { Pattern p = Pattern.compile("[^\\p{Digit}]"); Matcher m = p.matcher(s); digit = m.find(); } return !(alpha & digit); } }