リクエストとかでControlCharacterが混じっていると邪魔になるので弾きたかったという話
調べてもすぐにぱぱぱっと出てこなかったりして面倒なのでメモがてら書く
どちらも空文字は許可するようにしてある
テストはソースに書いてあるので興味があれば
import jakarta.validation.Constraint import jakarta.validation.Payload import jakarta.validation.constraints.Pattern import kotlin.reflect.KClass @Target(AnnotationTarget.FIELD) @Retention(AnnotationRetention.RUNTIME) @Constraint(validatedBy = []) @Pattern(regexp = "^$|[^\\p{Cntrl}]+") annotation class RejectControlCharacters( val message: String = "{com.example.validatecontrolcharacterssample.constraints.RejectControlCharacters.message}", val groups: Array<KClass<*>> = [], val payload: Array<KClass<out Payload>> = [] )
改行だけは許可したいみたいな場合はこっち
import jakarta.validation.Constraint import jakarta.validation.Payload import jakarta.validation.constraints.Pattern import kotlin.reflect.KClass @Target(AnnotationTarget.FIELD) @Retention(AnnotationRetention.RUNTIME) @Constraint(validatedBy = []) @Pattern(regexp = "^$|[^[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]]+") annotation class RejectControlCharactersOtherThanLineBreak( val message: String = "{com.example.validatecontrolcharacterssample.constraints.RejectControlCharactersOtherThanLineBreak.message}", val groups: Array<KClass<*>> = [], val payload: Array<KClass<out Payload>> = [] )
書いたソースはここ github.com