文章目录
前言
代码如下(示例):
^[A-Za-z0-9_~@#$^]{6,16}+$
 
一、正则表达式是什么?
二、正则表达式的使用
1.正则表达式原理
咱们只需要知道最基础的几个
| 字符 | 含义 | 
|---|---|
| ^ | 匹配开始符号 | 
| $ | 匹配结束符号 | 
| * | 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。 | 
| + | 一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。 | 
| ? | 零次或一次匹配前面的字符或子表达式。例如,"do(es)?“匹配"do"或"does"中的"do”。? 等效于 {0,1}。 | 
| {n} | n 是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。 | 
| {n,} | n 是非负整数。至少匹配 n 次。例如,"o{2,}“不匹配"Bob"中的"o”,而匹配"foooood"中的所有 o。"o{1,}“等效于"o+”。"o{0,}“等效于"o*”。 | 
| {n,m} | m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。‘o{0,1}’ 等效于 ‘o?’。注意:您不能将空格插入逗号和数字之间。 | 
| \ | 转义符号,像JAVA有些符号不能直接写,需要用\进行转义 | 
| . | 它匹配任何一个字符如:“a” 或 “1”。 | 
| /d,/w等 | 这些元字符就不说明了,都是匹配数字、字符串这些规则,像/d是数字字符匹配。等效于 [0-9]。 | 
下图是只允许用户名包含字符、数字、下划线和连接字符 -,并设置用户名的长度
 
 验证实数且只有两位小数的表达式
 
2.利用@Pattern(不建议)
可以利用valid库的@Pattern注解去实现入参的正则校验,但是这个注解只对某些基本类型有效,大部分不生效,原因不明
使用方法,还是前言的密码校验,代码如下(示例):
//regex是正则表达式,message是报错信息
		@Pattern(regex = "^[A-Za-z0-9_~@#$^]{6,16}+$",message = "密码位数为6-16个字符,区分大小写,支持字母(a-z,A-Z)、数字(0-9)及“_~@#$^”符号")
		private String password
 
3.利用Pattern类的方法或String的matches方法
String的matches方法
代码如下(示例):
		String password = "test";
        String regex = "^[A-Za-z0-9_~@#$^]{6,16}+$";
        if (!(password.matches(regex))){
            throw new Exception("密码位数为6-16个字符,区分大小写,支持字母(a-z,A-Z)、数字(0-9)及“_~@#$^”符号");
        }
 
Pattern类
 代码如下(示例):
        CharSequence password = "test";
        String regex = "^[A-Za-z0-9_~@#$^]{6,16}+$";
        Pattern.matches(regex, password);
 
总结
1、正确的联系方式格式(这个比较抽象,可以网上查)
2、价格必须大于等于零,且只允许两位小数(提示:先处理整数,再用符号.处理小数)
3、只能输入字母或者数字,最小不低于1个字符(提示:利用/w元符号,/w匹配字母或数字或下划线或汉字)










