public class IbanValidator implements ConstraintValidator<IbanOfType, String> {
private Pattern pattern;
@Override
public void initialize(IbanOfType type) {
pattern = Pattern.compile(getPattern(type.value()));
}
private String getPattern(IbanOfType.Type type) {
return switch (type) {
// "IBAN muss eine deutsche IBAN (DE + 20 Ziffern) sein"
case GERMAN -> "^DE\\d{20}$";
// "IBAN muss eine valide IBAN sein"
case INTERNATIONAL -> "^[A-Z]{2}\\d{2}[A-Z0-9]{11,30}$";
};
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return pattern.matcher(value).matches();
}
}