@Pattern搭配正则表达式约束数据值格式

2023年5月17日 车辆集成系统-车辆编码更新接口

        今天开发过程中,用了注解@Pattern来限制数据值格式,虽然在前后端分离的业务开发中对于数据值的限制在前端可以做更好的处理,但是还是记录一下学习学习。

        【1】问题场景:前端触发新车辆编码更改申请,后端需要校验新编码是否在数据库中存在,同时限制车辆编码的数据格式:不应为纯数字、纯字母,字母应为大写

        【2】需求:车辆编码格式:不能是纯数字、纯字母(小写、大写都不行)、至少包含一个大写字母

        【3】使用

/**
 * 申请车辆编码
 */
@ApiModelProperty(value = "申请车辆编码", name = "applyCode")
@NotNull(message = "申请车辆编码不能为空")
@Length(max = 10, message = "车辆编码长度不能超过10")
@Pattern(regexp = "(?!^\d+$)(?!^[a-zA-Z]+$)(?!.*[a-z])(?=.*[A-Z]).*$", message = "不应为纯数字或纯字母,包含字母应为大写")
private String applyCode;

         【4】规则解释:

        注解属性:regexp 表示匹配规则;

        注解属性:message 表示不忙组匹配规则的提示内容;

        regex属性值:完全符合正则表达式

                ?!:负向零宽断言,反向匹配。

                ?=:正向零宽断言,正向匹配。

                ^:以什么开头;

                \\d:0-9的随机一个数字;

                +数量词:1或多个(匹配到上一个字符形式)

                $:以什么结尾;

                []:元素集合;[a-zA-Z]==任意字母,不区分大小写;

                .:任意一个字符

                *:0个或多个

        【5】案例解释

        

(?!^\\d+$)(?!^[a-zA-Z]+$)(?!.*[a-z])(?=.*[A-Z]).*$
  •         第一个(?!^(\\d+$)):不能是纯数字;
  •         第二个(?!^[a-zA-z]+$):不能是纯字母【大小写都不行】;
  •         第三个(?!.*[a-z]):非纯字母但是包含字母只能大写,避免了类似"12aa"这样的情况
  •         第四个(?=.*[A-Z].*$):之后包含一个大写字母
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值