正则表达式
前面有遇到,贴了个百度百科,发现还是得熟悉一下
正则表达式:含有一些具有特殊意义字符的字符串,这些特殊字符成为正则表达式中的元字符。
常被用在判断语句中,用来检查某一字符是否满足某一格式。
元字符 | 正则表达式中的写法 | 意义 |
---|---|---|
. | . | 代表任意一个字符 |
\d | \\d | 代表0~9的任何一个数字 |
\D | \\D | 代表任何一个非数字字符 |
\s | \\s | 代表空白字符,如’\t’、’\n’ |
\S | \\S | 代表非空白字符 |
\w | \\w | 代表可用作标识符的字符,但不包括“$” |
\W | \\W | 代表不可用于标识符的字符 |
\p{Lower} | \\p{Lower} | 代表小写字母a~z |
\p{Upper} | \\p{Upper} | 代表大写字母A~Z |
\p{ASCII} | \\p{ASCII} | ASCII字符 |
\p{Alpha} | \\p{Alpha} | 字母字符 |
\p{Digit} | \\p{Digit} | 十进制数字,即0~9 |
\p{Alnum} | \\p{Alnum} | 数字或字母字符 |
\p{Punct} | \\p{Punct} | 标点符号:!"#$%&’()*+,-./:;<=>?@[]^_{ |
\p{Graph} | \\p{Graph} | 可见字符:[\p{Alnum}\p{Punct}] |
\p{Blank} | \\p{Blank} | 空格或制表符:[\t] |
\p{Cntrl} | \\p{Cntrl} | 控制字符:[\x00-\x1F\x7F] |
正则表达式中可以使用方括号括起若干个字符来表示一个元字符,该字符可代表方括号中的任何一个字符。
例如:reg="[abc]4"
则a4、b4、c4都是reg匹配的字符
限定修饰符
正则表达式钟允许使用限定修饰符来限定元字符出现的次数。
限定修饰符 | 意义 | 示例 |
---|---|---|
? | 0次或1次 | A? |
* | 0次或多次 | A* |
+ | 1次或多次 | A+ |
{n} | 正好出现n次 | A{2} |
{n,} | 至少出现n次 | A{3,} |
{n,m} | 出现n~m次 | A{2,6} |
String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
String s1 = "1112@11ffyu.com";
String s2 = "1112@11ffyu.dfggg.com";
String s3 = "1112@11ffyu.dfg.com";
if(s1.matches(regex)) {
System.out.println(s1+" 合法");
}
if(s2.matches(regex)) {
System.out.println(s2+" 合法");
}
if(s3.matches(regex)) {
System.out.println(s3+" 合法");
}
加号分开的三部分:
\w
@\w
(\.\w{2,3})*\.\w{2,3}
前两个不作赘述
第三个可以这样拆解:
(\.\w{2,3})*
\.\w{2,3}
第一部分:
\\.表示"." \\w表示可用作标识符的字符 {2,3}表示该可用作标识符的字符可出现2~3次 括号外的*表示括号内的整体不出现或者出现多次,再连接后面的部分,与括号内相同。
所以,regex的意思是说:
可用作标识符的字符+@+可用作标识符的字符+不出现或多次出现的“.+出现两到三次的可用作标识符的字符”+.+出现两到三次的可作为标识符的字符
输出结果:
1112@11ffyu.com 合法
1112@11ffyu.dfg.com 合法