正则表达式语法及java中的使用
语法规则
符号 | 注释 |
---|---|
\d | 匹配一个数字 |
\w | 匹配一个数字或字符或#或汉字 |
[] | 匹配一个和中括号中内容相同的 |
[^] | 匹配一个不在中括号中的东西 |
^jds | 匹配以jds开头的字符串,dfsdjdskk这样的不算 |
jds$ | 匹配以jds结尾的字符串,dfsdjdskk这样的不算 |
+ | 匹配左侧字符一次或者多次 |
* | 匹配左侧字符零次或多次 |
? | 匹配前面的字符零次或者一次 |
() | 将多个字符看成一个字符 |
{n} | 重复n次 |
{n,} | 至少重复n次,即能够重复匹配大于等于n次 |
{n,m} | 重复匹配大于等于n,小于等于m次 |
| | 或者 |
代码演示
^,\d,+,$组合使用
String reg = "^\\d+$";
String str = new Scanner(System.in).next();
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println("输入格式正确");
}else {
System.out.println("输入格式有误");
}
结果
7456196455
输入格式正确
7dsxsdvs654654
输入格式有误
ds7563965
输入格式有误
464654654k
输入格式有误
该正则表达式的说明
^ | \d | + | $ |
---|---|---|---|
开头 | 匹配一个数字 | 匹配一次或多次 | 结尾 |
String reg = “^\\d+$”;等价于String reg = “^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d$”,其中\d有[1,n]个,n取决于你输入字符串的长度。
意思就是要匹配开头第一个是数字的,中间全是数字的,结尾是数字的,\\d+表示的是对下一个东西进行是不是数字的判断,如果是,继续判断下一个,不是就判断结束,返回false,\d$表示最后一个是数字
7456196455
先匹配到第一个是7,满足==^\\d开头是数字的条件,接着是4,满足\\d+==全是数字的条件。
7dsxsdvs654654
先匹配到第一个是7,满足==^\\d开头是数字的条件,接着是d,满足\\d+==全是数字的条件。
^,\w,(),$组合使用
String reg = "^\\w+(@163.com)$";
String str = new Scanner(System.in).next();
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println("输入格式正确");
}else {
System.out.println("输入格式有误");
}
结果
41dscd6456sds_@163.com
输入格式正确
#fsdfsd@163.com
输入格式正确
$dfdsfs163.com
输入格式有误
,sfff163.com
输入格式有误
!dfd163.com
输入格式有误
.DSDS163.COM
输入格式有误
/@163.com
输入格式有误
该正则表达式的说明
^ | \w | + | (@163.com) | $ |
---|---|---|---|---|
开头 | 匹配一个数字 | 匹配一次或多次 | 要有@163.com字符 | 结尾 |
String reg = “^\\w+(@163.com)$”;
意思就是要匹配以数字或字母或下画线或#或汉字开头,以@163.com结尾,你可以将()理解成把@163.com包裹成一个字符
^,\d,{n},$组合使用
String reg = "^1\\d{10}$";
String str = new Scanner(System.in).next();
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println("输入格式正确");
}else {
System.out.println("输入格式有误");
}
结果
12345678955
输入格式正确
21234567894
输入格式有误
g456
输入格式有误
123
输入格式有误
该正则表达式的说明
^ | \d | {10} | $ |
---|---|---|---|
开头 | 匹配一个数字 | 重复十次 | 结尾 |
String reg = “^1\\d{10}$”;
意思就是开头是1,然后出现十次数字,确保为后一位是数字
^,|,\d,{n,m},{}组合使用
String reg = "^(1|2)\\d{3,5}[a-zA-Z]{6,}";
String str = new Scanner(System.in).next();
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println("输入格式正确");
}else {
System.out.println("输入格式有误");
}
结果
1789abcdzd
输入格式正确
178abcdzd
输入格式有误
1789555abcdzd
输入格式有误
1789abcdz
输入格式有误
24646fgbhnmsds
输入格式正确
该正则表达式的说明
^ | | | \d | {3,5} | [a-zA-Z] | {6,} |
---|---|---|---|---|---|
开头 | 或者 | 匹配一个数字 | 重复[3,5]次 | 匹配一个字母 | 至少要匹配6次 |
String reg = “^(1|2)\\d{3,5}[a-zA-Z]{6,}”;
意思就是以1或2开头,接着是3到5个数字,接着是6个以上的26个字母,不区分大小写
给自己看的,要是给你带错了,我不负责任啊
本文地址:https://blog.csdn.net/BigBang_JJDS/article/details/109276557
上一篇: 多线程--Thread中的常用方法
下一篇: Python 入门笔记9——选择结构