@[目录]
一. 常用正则公式 用户名支持中文(长度:2-7)或英文(长度:4-14),不可以_开头或结尾。
示范:
true
成龙 、成龙A 、 A成龙 、 成龙01 、1号成龙 、 成_龙 、成龙大哥就是牛
chenglong 、cheng_long 、ChengLong1
fales
1111 、龙 、成龙大哥就是nb 、_成龙 、成龙 _ 、 cheng-long 、CL
@Pattern(regexp = "^(?!_)(?!.*?_$)(?!^\d+$)(?!\w{3})([\w\u4e00-\u9fa5]{2,7}|\w{4,14})$",
message = "支持中文(长度:2-7)或英文(长度:4-14),不可以_开头或结尾。")
private String username;
用户密码
密码长度8-30字符,必须包含大小写字母、数学和特殊字符
示范:
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
说明:
手机号可以有 +86 或0086 的区号后面接n个空格,第一位必须是1,第二位必须是[34578]中的一个,后九位是任意数字
示范:
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位字母或数字都
反选:[^不能选的字符列表]
比如:[^47]
强调:^作“除了”使用时,只能放在开头
预定义字符 集 d说明:预定义字符集,为常用的字符集专门提供的简化写法!
用法:d 表示 [0-9] --> 1位数字
w 表示 [0-9a-zA-Z_] --> 1位字母,数字或_
ss 表示1位空字符:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。
.. 表示除换行回车外的任何一个字符
t比如:
“a.[0-9]”:表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
“^.{3}$”:表示有任意三个字符的字符串(长度为3个字符)
t 表示 一个制表符
预定义字符的反义说明:预定义字符的大写形式都是小写的反义
D表示1位非数字字
S表示任意非空白字符。等价于[^fnrtv]。
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位数字,但是不能包含4和7
(?=[^47]$) 是否由除了4,7之外的字符组成
先检查字符串是否不满足表达式要求
|比如
- 不能都由小写字母和大写字母组成
(?![a-zA-Z]+$)- 不能以_开头和结尾
^(?!)(?!.*?$)
表示左右两正则表达式选其一
u4e00-u9fa5比如
身份证最后一位可能是数字或X
^(d{17})([0-9]|X)$
表示中文
参考文章:正则表达式知识详解



