Java中@Pattern注解常用的校验正则表达式学习笔记

 更新时间:2022年07月06日 10:50:14   作者:ヾ顾北の凉城づ  
对于正则这个东西,对我来说一直是很懵逼的,每次用每次查,然后还是记不住,下面这篇文章主要给大家介绍了关于Java中@Pattern注解常用的校验正则表达式学习笔记的相关资料,需要的朋友可以参考下

1、 前端传参要求

项目开发中经常会遇到对用户输入内容的限制,本篇对常用限制做一总结。如下图所示,标识字段有严格命名限制,用户输入校验这部分工作前端可以做,当然后端也可以通过在实体类中添加注解的方式实现参数校验。其底层原理还是拦截器拦截请求,对带有相关注解的属性字段进行处理(非空、大小、长度、内容等判断和验证)

实体类中代码如下:

/**
* 公司名称
*/
@Pattern(regexp="^[\u4e00-\u9fa5_a-zA-Z0-9]+$",message="公司名称只能输入中文字符 字母、数字")
		@ApiModelProperty(value = "公司名称")
		private String name;

有时系统对用户名的命名有更多要求,比如用户名必须要有一个小写字母,一个大写字母和一个数字,并且是6-20位,正则表达式如下:

   @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[A-Za-z0-9]{6,20}$", message = "用户名错误")

2、其他常用正则表达式

2.1 数字校验

1 整数或者小数:"^[0-9]+\.{0,1}[0-9]{0,2}$"
2 只能输入数字:"^[0-9]*$"
3 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"
4 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"
5 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"
6 只能输入非零的正整数:"^\+?[1-9][0-9]*$"
7 只能输入非零的负整数:"^^-[1-9]+[0-9]*$"

2.2 字符串校验

只能输入长度为3的字符:"^.{3}$"。
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"

2.3 月份时间校验

验证一年的12个月:"^(0?[1-9]|1[0-2])$"    //格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"  //格式为;"01"~"09"和"1"~"31"。

2.4 Email校验

   由于各种域名邮箱的多样性,需要特殊情况特殊对待,限制可以做的严格也可以宽松
举例:zhangsan_123@cetc.com.cn

分析邮件名称部分:
   字母和数字表示为A-Za-z0-9 
   下划线表示为_
   中划线表示为-
   由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现
   通过分析得出邮件名称部分表达式为[a-zA-Z0-9_-]+

分析域名部分:
   一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”,比如"qq.com"、"www.qq.com"、"mp.weixin.qq.com"、"12-34.com.cn",分析可得域名类似"** .** .** .**"组成。
   "**"部分可以表示为[a-zA-Z0-9_-]+
   ".**"部分可以表示为\.[a-zA-Z0-9_-]+
   多个".**"可以表示为(\.[a-zA-Z0-9_-]+)+
   综上所述,域名部分可以表示为[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
   
最终表达式: 
 我们用@符号将邮箱的名称和域名拼接起来,因此完整的邮箱表达式为 
  ^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

验证Email: "^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"

2.5 汉字校验

只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

匹配中文字符的正则表达式:"[\u4e00-\u9fa5]"

2.5 联系电话校验

联系电话:@Pattern(regexp = "^[\\d\\*]{7,12}$", message = "联系电话输入有误")
由于区号分为3位和四位的,然后座机号码又分为7位和8位的,所以这里校验的长度是7-12位,并且这里添加了*表示脱敏的手机号仍然可以通过校验。

2.5 密码校验

密码:长度为6-32位,并且必须包含数字、字母、特殊符号中的至少两种:
@Pattern(regexp = "^(?=.*[a-zA-Z0-9].*)(?=.*[a-zA-Z.!@#$%^&*].*)(?=.*[0-9.!@#$%^&*].*).{6,32}$", message = "密码至少包含数字,字母和符号的两种")

总结

到此这篇关于Java中@Pattern注解常用的校验正则表达式学习笔记的文章就介绍到这了,更多相关Java @Pattern注解校验正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈spring中isolation和propagation的用法

    浅谈spring中isolation和propagation的用法

    这篇文章主要介绍了浅谈spring中isolation 和propagation的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 深入浅析java中finally的用法

    深入浅析java中finally的用法

    finally自己由关键字finally和后面的finally块组成。这篇文章重点给大家介绍java中finally的用法,需要的朋友参考下吧
    2018-06-06
  • java运行windows的cmd命令简单代码

    java运行windows的cmd命令简单代码

    这篇文章主要介绍了java运行windows的cmd命令简单代码,有需要的朋友可以参考一下
    2013-12-12
  • JUC之Semaphore源码分析

    JUC之Semaphore源码分析

    这篇文章主要为大家详细分析了JUC之Semaphore源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • SpringBoot @PostConstruct原理用法解析

    SpringBoot @PostConstruct原理用法解析

    这篇文章主要介绍了SpringBoot @PostConstruct原理用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java计时新姿势StopWatch的使用方法详解

    Java计时新姿势StopWatch的使用方法详解

    这篇文章主要给大家介绍了关于Java计时新姿势StopWatch的相关资料,以及java 中使用StopWatch来计算时间差的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Elasticsearch QueryBuilder简单查询实现解析

    Elasticsearch QueryBuilder简单查询实现解析

    这篇文章主要介绍了Elasticsearch QueryBuilder简单查询实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 解决Properties属性文件中的值有等号和换行的小问题

    解决Properties属性文件中的值有等号和换行的小问题

    这篇文章主要介绍了解决Properties属性文件中的值有等号有换行的小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • JAVA构造方法/构造器以及this使用方式

    JAVA构造方法/构造器以及this使用方式

    这篇文章主要介绍了JAVA构造方法/构造器以及this使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • struts2中使用注解配置Action方法详解

    struts2中使用注解配置Action方法详解

    这篇文章主要介绍了struts2中使用注解配置Action方法详解,涉及一个示例,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10

最新评论