TokiNoviceProgrammer / mrs-for-spring-boot

0 stars 0 forks source link

郵便番号バリデーションチェック #23

Open TokiNoviceProgrammer opened 2 months ago

TokiNoviceProgrammer commented 2 months ago
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.AssertTrue;

public class PostalCodeForm {

    @NotEmpty(message = "{postalCode.required}")
    private String postalCode;

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    @AssertTrue(message = "{postalCode.invalidFormat}")
    public boolean isPostalCodeValid() {
        if (postalCode == null || postalCode.isEmpty()) {
            return false; // 必須項目は @NotEmpty でチェックするのでここでは不要
        }

        // ハイフンなし(7桁まで)
        if (postalCode.matches("\\d{1,7}")) {
            return true;
        }

        // ハイフンあり(8桁まで、ハイフン含む)
        if (postalCode.matches("\\d{3}-\\d{4}")) {
            return true;
        }

        // 数値とハイフン以外が含まれている場合は不正
        return false;
    }
}
TokiNoviceProgrammer commented 2 months ago
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.AssertTrue;

public class PostalCodeForm {

    @NotEmpty(message = "{postalCode.required}")
    private String postalCode;

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    // ハイフンなしで7桁までのバリデーション
    @AssertTrue(message = "{postalCode.tooLongWithoutHyphen}")
    public boolean isValidWithoutHyphen() {
        if (postalCode == null || postalCode.isEmpty()) {
            return true; // 必須エラーはNotEmptyで処理
        }
        return postalCode.matches("\\d{1,7}");
    }

    // ハイフンありで8桁までのバリデーション
    @AssertTrue(message = "{postalCode.tooLongWithHyphen}")
    public boolean isValidWithHyphen() {
        if (postalCode == null || postalCode.isEmpty()) {
            return true;
        }
        return postalCode.matches("\\d{3}-\\d{4}");
    }

    // 数値とハイフン以外が含まれていないかのバリデーション
    @AssertTrue(message = "{postalCode.invalidCharacters}")
    public boolean hasValidCharacters() {
        if (postalCode == null || postalCode.isEmpty()) {
            return true;
        }
        return postalCode.matches("[0-9-]*");
    }
}
TokiNoviceProgrammer commented 2 months ago

postalCode.required=郵便番号を入力してください。
postalCode.tooLongWithoutHyphen=郵便番号は、0文字以上、7文字以下で入力してください。
postalCode.tooLongWithHyphen=郵便番号は、0文字以上、8文字以下で入力してください。
postalCode.invalidCharacters=郵便番号に不正な値が設定されています。
TokiNoviceProgrammer commented 2 months ago

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.AssertTrue;

public class PostalCodeForm {

    @NotEmpty(message = "{postalCode.required}")
    private String postalCode;

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    // ハイフンなしで7桁までのバリデーション
    @AssertTrue(message = "{postalCode.tooLongWithoutHyphen}")
    public boolean isValidWithoutHyphen() {
        if (postalCode == null || postalCode.isEmpty() || postalCode.contains("-")) {
            return true; // ハイフンが含まれている場合はここでスキップ
        }
        return postalCode.matches("\\d{1,7}");
    }

    // ハイフンありで8桁までのバリデーション
    @AssertTrue(message = "{postalCode.tooLongWithHyphen}")
    public boolean isValidWithHyphen() {
        if (postalCode == null || postalCode.isEmpty() || !postalCode.contains("-")) {
            return true; // ハイフンが含まれていない場合はスキップ
        }
        return postalCode.matches("\\d{3}-\\d{4}");
    }

    // 数値とハイフン以外が含まれていないかのバリデーション
    @AssertTrue(message = "{postalCode.invalidCharacters}")
    public boolean hasValidCharacters() {
        if (postalCode == null || postalCode.isEmpty()) {
            return true;
        }
        return postalCode.matches("[0-9-]*");
    }
}