WEB+DB PRESS Vol.6
特集3 「セキュリティ入門 Webアプリケーション開発編」
・第4章「JSP/サーブレットにおけるセキュリティ」
143ページ、リスト2「正規表現による文字列チェック」の18行目において、半 角英数字かどうかをチェックせねばならないところを、半角数字のみしかチェッ クしておりませんでした。正しくは次のようになります(赤字の行が訂正箇所です)。
package webdb;
import org.apache.oro.text.perl.Perl5Util;

public class StrChkLib {
    Perl5Util util = new Perl5Util();

    // 数字チェック
    public boolean numberCheck(String str) {
        if (util.match("/^[1-9][0-9]+$/", str)) {
            return true;
        } else {
            return false;
        }
    }

    // 半角英数チェック
    public boolean numberCheck(String str) {
        if (util.match("/^[0-9][A-Za-z]+$",str)){ 
            return true;
        } else {
            return false;
        }
    }

    // 郵便番号フォーマットチェック
    public boolean zipFormatCheck(String str) {
        if (util.match("/^[0-9]{3}-[0-9]{4}$/", str)) {
            return true;
        } else {
            return false;
        }
    }

    // メールアドレスチェック
    public boolean mailAddressCheck(String str) {
        if (util.match("/^[A-Za-z0-9.\\-_]+@([A-Za-z0-9.\\-]+)$/", str)) {
            String domainstr = util.group(1);
            if (domainstr.indexOf(".") != -1 
                    && domainstr.startsWith(".") == false 
                    && domainstr.endsWith(".") == false
                    && domainstr.startsWith("-") == false 
                    && domainstr.endsWith("-") == false
                    && util.match("/\\.\\./", domainstr) == false
                    && util.match("/-\\./", domainstr) == false
                    && util.match("/\\.-/", domainstr) == false ) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

}