javaで正規表現 その後の話

とあるコードが数字→英数字になる仕様変更に取り組んだ、その後の話。

数字の頃にNGにしていたコードは、従来通りNGにしてくださいという仕様変更が発生。

…でレビューと試験が依頼されたわけだけども、上がってきたコードを見て頭を抱えた。
もとの仕様を満たした場合のif条件の中に、さらにif条件が追加されていた。

…モヤモヤしたので、自分で書いてみた。

public static boolean isTargetCode(String strCode)
{
	if (!strCode.matches("^[0-9a-zA-Z]{3}$"))
	{
		return false;

	}

	int intCode = 0;

	try {
		intCode = Integer.parseInt(strCode);

	} catch (NumberFormatException nfe) {
		// 英字交じりの場合
		return true;

	}

	return intCode > 0 && intCode <= 500;
}