JAVA常用正则表达式

一. 常用正则公式

用户名

  1. 支持中文(长度:2-7)或英文(长度:4-14),不可以_开头或结尾。
^(?!_)(?!.*?_$)(?!^\d+$)((?=.*?[\u4E00-\u9FA5])[\w\u4e00-\u9fa5]{2,7}|\w{4,14})$

示范:
true
成龙 、成龙A 、 A成龙 、 成龙01 、1号成龙 、 成_龙 、成龙大哥就是牛
chenglong 、cheng_long 、ChengLong1
fales
1111 、龙 、成龙大哥就是nb 、_成龙 、成龙 _ 、 cheng-long 、CL

@Pattern(regexp = "^(?!_)(?!.*?_$)(?!^\d+$)((?=.*?[\u4E00-\u9FA5])[\w\u4e00-\u9fa5]{2,7}|\w{4,14})$",
            message = "支持中文(长度:2-7)或英文(长度:4-14),不可以_开头或结尾。")
    private String username;

用户密码

  1. 密码长度6-14,必须包含大小写字母和数字,可以有特殊字符
  ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,14}$   
  1. 密码长度6-14,必须包含大小写字母和数学,不能有特殊字符
 ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,14}$   
  1. 密码长度6-14,必须包含大小写字母和数学,必须有特殊字符
^(?![0-9]+$)(?![^0-9]+$)(?![a-zA-Z]+$)(?![^a-zA-Z]+$)(?![a-zA-Z0-9]+$)[a-zA-Z0-9\\S]{6,14}$

示范
true
Cheng123- 、QWERqwer123= 、ChengLong1* 、zxcZXC12\ 、123qw.eQ 、
fales
zxcvbnma 、12345678 、ZXCVBASD、1234ZXCV、1234zxcv、1234****

@Pattern(regexp = "^(?![0-9]+$)(?![^0-9]+$)(?![a-zA-Z]+$)(?![^a-zA-Z]+$)(?![a-zA-Z0-9]+$)[a-zA-Z0-9\\S]{8,30}$"
            , message = "密码长度8-30字符,必须包含大小写字母、数学和特殊字符")
    private String passwor

手机号

可以有 +860086 的区号后面接n个空格,第一位必须是1,第二位必须是[34578]中的一个,后九位是任意数字

^(\+86|0086)?\s*1[34578]\d{9}$

示范:
true
13701245215 、+86 13701245481 、0086 18515487845 、 +86 17587454875
fales
12712467854 、+8613701245481 、008618515487845

@Pattern(regexp = "^(\\+86|0086)?\\s*1[34578]\\d{9}$")
    private String phone

邮箱

  @Email(message = "请输入正确的邮箱地址")
    private String email

身份证

前17位数字,最后1位是数字或者X
示范:
true
310612199907153315 、31061219990715321X
fales
31061219990715321x

    @Pattern(regexp = "^(\\d{17})([0-9]|X)$"
    private String idNumber

二. 正则符号说明

备选字符集

说明:规定某一位字符可用的备选字符的集合
语法:[可选字符列表]

强调:

1. 无论备选字符集包含多少字符,只能选1
2. 必须选1个!
[ ]

比如:
6位数字的密码
[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]

简化:1. 当备选字符连续时,可用-表示范围的区间
比如:[0123456789]–>[0-9]

[0-9][0-9][0-9][0-9][0-9][0-9]

[123]-->只能是1、2、中的一个
[a-z]-->1位小写字
[A-Z]-->1位大写字
[A-Za-z]-->1位字母,大小写都
[0-9a-zA-Z]-->1位字母或数字都

反选:[^不能选的字符列表]

比如:
匹配除了4和7以外的任意字符
[^47]

强调:^作“除了”使用时,只能放在开头

预定义字符 集

\d

说明:预定义字符集,为常用的字符集专门提供的简化写法!
用法:\d 表示 [0-9] --> 1位数字

\w

\w 表示 [0-9a-zA-Z_] --> 1位字母,数字或_

\s

\s 表示1位空字符:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

.

. 表示除换行回车外的任何一个字符

比如:
“a.[0-9]”:表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
“^.{3}$”:表示有任意三个字符的字符串(长度为3个字符)

\t

\t 表示 一个制表符

预定义字符的反义

说明:预定义字符的大写形式都是小写的反义

\D

表示1位非数字字

\S

表示任意非空白字符。等价于[^\f\n\r\t\v]。

\v

表示一个垂直制表符

\n

表示一个换行符

\r

表示一个回车符

数量词

说明:规定前一个字符集可出现的次数

{ }

用法:

{n} : 表示必须出现 n 次数
{n,m} : 表示最少出现 n 次,最多出现 m 次
{n,} : 表示至少出现n次,多了不限制

*

表示有没有都行,次数不限,相当于 {0,}

+

表示至少1次,最多不限制,相当于 {1,}

?

表示有没有都行,最多1次,相当于 {0,1}

特殊字

^

表示必须以表达式的规则为开头

$

表示必须以表达式的规则为结尾
提示:
在规范的正则表达式中,要求必须以 ^ 开头以 $ 结尾,表示从头到尾完整匹配

如:
^\d{6}$——从头到尾必须只能是6位数字
1234567

\\

转义符,表示 \
用法:在Java中 你在写正则时,想用 \d 就需要写成 \\d

(?= 表达式)

先判断字符串是否满足表达式的要求
何时使用:只要正则中出现类似“而且”

比如:
不能包含4和7的四位数数字
^((?=[ ^ 47])\d){4}

(?! 表达式)

先检查字符串是否不满足表达式要求

比如

  1. 不能都由小写字母和大写字母组成
    (?![a-zA-Z]+$)
  2. 不能以_开头和结尾
    ^(?! _ )(?!.*? _ $)
|

表示左右两正则表达式选其一

比如
身份证最后一位可能是数字或X
^(\d{17})([0-9]|X)$

\u4e00-\u9fa5

表示中文


参考文章:正则表达式知识详解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值