目录
一. 常用正则公式
用户名
- 支持中文(长度: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;
用户密码
- 密码长度6-14,必须包含大小写字母和数字,
可以有
特殊字符
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,14}$
- 密码长度6-14,必须包含大小写字母和数学,
不能有
特殊字符
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,14}$
- 密码长度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
手机号
可以有 +86
或0086
的区号后面接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}
(?! 表达式)
先检查字符串是否不满足表达式要求
比如
- 不能都由小写字母和大写字母组成
(?![a-zA-Z]+$)- 不能以_开头和结尾
^(?! _ )(?!.*? _ $)
|
表示左右两正则表达式选其一
比如
身份证最后一位可能是数字或X
^(\d{17})([0-9]|X)$
\u4e00-\u9fa5
表示中文
参考文章:正则表达式知识详解