うん、なんかメモ的なアレ

文字列・正規表現

基本的なことは値をStringに変換し、
matchesメソッドを使う。

日付チェック

正規表現を使ったチェック
注:日付文字列は「/」が取り外されていること
String date1 = "20100927"; // 2010年09月27日 実在する値
String date2 = "20100229"; // 2010年02月29日 実在しない値

// 日付チェックを行うパターン(閏年も対応)
String pattern = "^(?!([02468][1235679]|[13579][01345789])000229)(([0-9]{4}(01|03|05|07|08|10|12)(0[1-9]|"
		+ "[12][0-9]|3[01]))|([0-9]{4}(04|06|09|11)(0[1-9]|[12][0-9]|30))|"
		+ "([0-9]{4}02(0[1-9]|1[0-9]|2[0-8]))|"
		+ "([0-9]{2}([02468][048]|[13579][26])0229))$";
if(date1.matches(format)){ // 引数に正規表現のパターンを渡す
    System.out.println("20100927は実在します。");
} else {
    System.out.println("20100927は実在しません。");
}
if(date2.matches(format)){ // 引数に正規表現のパターンを渡す
    System.out.println("20100229は実在します。");
} else {
    System.out.println("20100229は実在しません。");
}
実行結果
20100927は実在します。
20100229は実在しません。
JavaのDateFormatクラスを使ったチェック
注:日付文字列は「YYYY/MM/DD」形式で渡されていること
String date = "2010/02/29"; // 実在しない日付
DateFormat df = DateFormat.getDateInstance(); // 日付フォーマッターを定義
df.setLenient(fasle); // 解析レベルを厳密にする
try {
	df.parse(date); // 入力年月日を解析
	System.out.println(date + ":true");
} catch (ParseException e) { // ありえない日付が渡されるとこっちに来る
	System.out.println(date + ":false");
}
実行結果
2010/02/29:false

このページへのコメント

YgE7oK Major thanks for the article. Much obliged.

0
Posted by stunning seo guys 2014年01月23日(木) 08:22:34 返信

LqResr I think this is a real great blog post.Really looking forward to read more.

0
Posted by watch for this 2013年12月19日(木) 10:48:31 返信

2F2NaF <a href="http://vrpqylbfmdha.com/">vrpqylbfmdha</a>, [url=http://otujfmwpfrns.com/]otujfmwpfrns[/url], [link=http://xpognmdmzjfs.com/]xpognmdmzjfs[/link], http://ymnyumykfrql.com/

0
Posted by hvplsmupmbh 2013年11月19日(火) 23:03:44 返信

ydjqVE <a href="http://prtdeleifpcs.com/">prtdeleifpcs</a>, [url=http://wmvlolfhrnyn.com/]wmvlolfhrnyn[/url], [link=http://taqqejrxhanv.com/]taqqejrxhanv[/link], http://nxrjrmhsanvu.com/

0
Posted by ztkohn 2013年11月15日(金) 07:25:59 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます