spring boot中@Pattern校验String时间格式
记录一下在使用spring boot开发后端接口时遇到的一个问题。
我想在实体类中直接用注解验证日期时间格式,但前端传过来的是字符串,不是Date,所以刚开始用@Datetimeformat一直不生效。之后改用@Pattern
@Pattern
想验证时间日期字符串是否为“yyyy-MM-dd HH:mm:ss”格式的,利用正则表达式。
实体类中:
//实体类
@Data
public class Message {
@NotNull(message = "开始时间不能为空")
@Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$",
message = "时间格式应为:yyyy-MM-dd HH:mm:ss")
private String start_time;
//...
}
controller中:(注意要有@Valid)
@PostMapping("setMessage")
@ResponseBody
public Result setMessage(@Valid Message message, BindingResult bindingResult) {
//...
}
@Datetimeformat
只能用来对Date类型的日期参数进行校验。