Java正则表达式
一、正则表达式概念
检查、匹配字符串的表达式
二、.正则表达式语法规则
1、字符范围匹配:
A 表示:精准匹配A这个字符(单个字符)
x | y 表示:允许出现x或y字符
[abc] 表示:只有一个字符a或b或c
[a-zA-Z] 表示:a到z 或A到Z,两头的字母包括在内
[0-9] 表示:只有一个字符,0-9中一个数字 简写形式:\d
[^xyz] 表示:不允许出现x或y或z
[^0-9] 表示:不允许出现0-9任意一个字符
2、元字符:
\d 表示:匹配任意单个数字
\D 表示:除数字之外的任意字符
\s 表示:空白字符 可以是空格或\t(制表位)或\n(换行符)
\S 表示:除空白字符以为的任意字符
\w 表示:a-z 或A-Z 或 0-9
\W 表示:除a-z 、A-Z 、 0-9之外的任意字符
\n 表示:匹配单个换行符
\. 表示:匹配.这个字符
【以上有斜杠得在用的时候要写再加一个右斜杠,eg:String a="\\D"】
. 表示:匹配任意单个字符(换行符除外)
^ 表示:正则的起始标记(正则表达式中可以不写)
$ 表示:结束标记(正则表达式中可以不写)
3、多次重复匹配:
X{n} 表示:给定的X只能有n个 eg:[0-9]{2} 只能是0-9的数字并且只能有2个(位) 15符合规则,123 不符合规则不是2位数字
X{n,} 表示:给定的X至少有n个 eg:[0-9]{2,} 只能是0-9的数字并且至少有2个(位) 15,123 均符合规则 8 则不符合规则
X{n,m} 表示:给定的X至少有n个,但不超过m次 eg:[0-9]{2,6} 只能是0-9的数字并且至少有2个(位) 但不能超过6个(位) 85,616 均符合规则,20000616 超过6位不符合规则
[0-9]* 表示:只能是0-9的数字并且可以出现零次至无限次,相当于{0,}
[0-9]? 表示:最多出现一次 ,相当于{0,1}
[0-9]+ 表示 :只能是0-9的数字并且至少出现一次
例子:
1.验证短信验证码(6位数字eg:032547) 正则表达式为: \d{6}
2.匹配全国做记号(区号3或4位-电话号7或8位
eg: 031-6666666 或 0312-12345678) 正则表达式为: \d{3,4}-\d{7,8}
3.匹配英文姓名(eg: James Watson或James W)
[A-Z][a-z]{1,}\s[A-Z][a-z]{0,} 或 [A-Z][a-z]+\s[A-Z][a-z]*
4、定位匹配:
^A.* 头匹配 eg:ABC 以A开头的任意多个字符(^A表以A开头的字符,.表任意,*表零次至无限次)
.*A$ 尾匹配 eg:CBA 以A结尾的任意多个字符(A$表以A结尾的字符)
^A.*A$ 全字匹配 eg:ABCA 以A开头A结尾的中间任意多个字符
三、示例
用正则表达式表示用户名、密码、手机号、邮箱
用户名: [a-zA-Z]{6,12} 表示:a到z 或A到Z至少有6位但不能超过12位
密码:[0-9]{6,} 表示:只能是0-9的数字并且至少有6位
手机号:1[3456789]\d{9} 表示:字符串开始第一个字符只能是1,第二个字符时3或4或5或6或7或8或9 ,\d{9} 只能有9位0-9的数字 共11位组成手机号
邮箱:[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+ eg:ycf@163.com 或1852003327@qq.com
[a-zA-Z_0-9]{3,}@ 表示:只能是a到z 或A到Z 或0-9 至少出现3次 且最后必须是@符号
[a-zA-Z]+ 表示:只能是a到z 或A到Z 出现的次数至少出现1次
| : 或的意思
\\d+ : 表示:0-9至少出现一次
\\. : 表示:.字符