Who is 正则?
正则表达式是一个符合一定规则的字符序列。String对象调用public boolen matches(String regex)方法可以判断当前String对象的字符序列是否符合regex指定的正则表达式匹配。
元字符
元字符 | 意义 |
---|---|
. | 代表任意一个字符 |
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
\d | 代表0~9中任意一个数字 |
\D | 代表任意一个非数字字符 |
\s | 代表空格类字符,'\t','\n','\x0B','\f','\r' |
\S | 代表非空格类字符 |
\w | 代表可用于标识符的字符(a-zA-Z_0-9) |
\W | 代表不能用于标识符的字符 |
\p{Lower} | 小写字母 |
\p{Upper} | 大写字母 |
\p{ASCII} | ASCII字符 |
\p{Alpha} | 字母 |
\p{Dight} | 数字字符[0-9] |
\p{Alnum} | 字母或数字 |
\p{Punct} | 标点符号: !"#$%^&*()@[]|\ /{}~ |
\p{Graph} | 可视字符:\p{Alnum}\p{Punct} |
\p{Print} | 可打印字符 |
\p{Blank} | 空格或者制表符[\t] |
\p{Cntrl} | 控制字符 |
字符序列
[abc] | a,b,c中的任何一个 |
[^abc] | 除了a,b,c以外的任何字符 |
[a-zA-Z] | 英文字母,忽略大小写 |
[a-d] | a到d中的任意一个 |
[a-d[m-p]] | a~d并m~p中的任意一个(并) |
[a-z&&[def]] | d,e,f,中 的任意一个(交) |
[a-f&&[^bc]] | a,d,e,f(差) |
[.]或\56 | . |
限定符
带限定修饰符的模式 | 意义 |
---|---|
X? | X出现0次或1次 |
X* | X出现0次或多次 |
X+ | X出现1次或多次 |
X{n} | X出现n次 |
X{n,} | X至少出现n次 |
X{n,m} | X出现n次至m次 |
X|Y | X或Y |
XY | X的后缀为Y |
public class One
{
public void idRegex(String id)
{
String regex="((\\d{18}$)|(^\\d{17}(\\d{1}|[Xx])))";
if(id.matches(regex))
System.out.println("身份证格式正确");
else
System.out.println("身份证格式错误");
}
public void phoneRegex(String phone)
{
String regex="(1[358]\\d{9})";
if(phone.matches(regex))
System.out.println("手机号码格式正确");
else
System.out.println("手机号码格式错误");
}
public void mailRegex(String mail)
{
String regex="(\\w+@\\w+\56{1}com)";
if(mail.matches(regex))
System.out.println("邮箱格式正确");
else
System.out.println("邮箱格式错误");
}
public static void main(String[] args)
{
System.out.println("输入----------");
Scanner in=new Scanner(System.in);
String target=in.nextLine();
One t=new One();
// t.idRegex(target);
// t.phoneRegex(target);
t.mailRegex(target);
}
}