spring boot中@Pattern校验String时间格式

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类型的日期参数进行校验。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Spring Boot 校验框架可以方便地对手机号进行校验。具体实现步骤如下: 1. 引入依赖 在 `pom.xml` 文件引入 `spring-boot-starter-validation` 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> ``` 2. 编写手机号校验注解 在需要校验手机号的参数上加上自定义的注解 `@Phone`,如下所示: ```java public class User { @NotBlank(message = "用户名不能为空") private String username; @Phone(message = "手机号格式不正确") private String phone; // getter 和 setter 方法 } @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = PhoneValidator.class) @Documented public @interface Phone { String message() default "手机号格式不正确"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } ``` 其,`@Phone` 注解的实现需要指定校验逻辑,即 `PhoneValidator` 类的实现。 3. 实现手机号校验逻辑 在 `PhoneValidator` 类实现手机号的校验逻辑,如下所示: ```java public class PhoneValidator implements ConstraintValidator<Phone, String> { @Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value == null) { return true; } String regx = "^1[3|4|5|7|8][0-9]{9}$"; return Pattern.matches(regx, value); } } ``` 在校验手机号时,如果手机号为 `null` 则直接返回 `true`,否则使用正则表达式匹配手机号格式。如果匹配成功,则返回 `true`,否则返回 `false`。 4. 进行手机号校验 在需要校验手机号的方法,使用 `@Valid` 注解标注需要校验的对象,如下所示: ```java @RestController public class UserController { @PostMapping("/users") public User createUser(@Valid @RequestBody User user) { return user; } } ``` 在请求时,如果手机号格式不正确,会返回 `400 Bad Request`,并提示手机号格式不正确。如果手机号格式正确,则正常创建用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值