0
点赞
收藏
分享

微信扫一扫

JAVA正则表达式入门

左小米z 2022-04-29 阅读 167

文章目录


前言

代码如下(示例):

^[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匹配字母或数字或下划线或汉字)
举报

相关推荐

0 条评论