本文共 2128 字,大约阅读时间需要 7 分钟。
在我们日常的编程中,常常需要验证一个字符串是否满足于我们需求的格式,例如判断邮箱地址是否合法,手机号码是否合法等,这时,我们便可以运用正则表达式,用来检查字符串是否满足我们规定的格式。正则表达式是含有一些特殊意义字符的字符串,这些特殊意义的字符串称为正则表达式的元字符。
元字符 | 正则表达式中的写法 | 意义 |
---|---|---|
. | . | 代表任意一个字符 |
\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{Punct} | \\p{Punct} | 数字或字母字符 |
\p{Graph} | \\p{Graph} | 标点符号:"!$&*()+-,'<>=@{|}[\]^_~ |
\p{Print} | \\p{Print} | 可见字符:[\p{Alnum}\p{Punct}] |
\p{Blank} | \\p{Blank} | 可打印字符:[\p{Graph}\x20] |
\p{Cntrl} | \\p{Cntrl} | 空格或制表符:[\t] |
\p{Lower} | \\p{Lower} | 抑制字符:[\x00-\x1F\x7F] |
注:在正则表达式中“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转义字符“\”
方括号的用法:
[^456]:代表4、5、6之外的任何字符。
[a-r]:代表a~r中的任何一个字母。
[a-zA-Z]:代表任意一个英文字母
[a-e[g-z]]:代表a~e,或g~z的任何一个字母(并运算)
[a-o&&[def]]:代表字母d、e、f(交运算)
[a-d&&[^be]]:代表字母a、d(差运算)
在正则表达式中允许使用限定修饰符来限定元字符的出现次数。
限定修饰符 | 意义 | 示例 |
---|---|---|
? | 0次或1次 | A? |
* | 0次或多次 | A* |
+ | 一次或多次 | A+ |
{n} | 正好出现n次 | A{2} |
{n,} | 至少出现n次 | A{2,} |
{n,m} | 出现n~m次 | A{2,4} |
应用实例:
1、运用正则表达式来判断指定的变量是否为合法的E-mail地址。
public class Demo22 { public static void main(String[] args) { String mail = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; //定义要匹配E-mail地址的正则表达式 String str1="aaa@"; String str2="aaaaa"; String str3="123@56asd.sro.com"; if(str1.matches(mail)){ System.out.println(str1+"是一个合法的E-mail地址"); } else System.out.println(str1+"不是一个合法的E-mail地址"); if(str2.matches(mail)){ System.out.println(str2+"是一个合法的E-mail地址"); } else System.out.println(str2+"不是一个合法的E-mail地址"); if(str3.matches(mail)) { System.out.println(str3 + "是一个合法的E-mail地址"); } else System.out.println(str3+"不是一个合法的E-mail地址"); }}
运行结果:
2、使用正则表达式来判断字符串是否为合法的手机号
public class Demo20 { public static void main(String[] args) { // 主方法 String regex = "1[358]\\d{9}"; //也可写成[1][358][0-9]{9} String text = "15123456789"; if (text.matches(regex)) { System.out.println(text + "是合法的手机号"); } }}
运行结果:
转载地址:http://jbirn.baihongyu.com/