正则表达式之匹配

时间:2021-05-12 05:34:50
/*
* 正则表达式:符合一定规则的表达式
* 作用:用于专门操作字符串
* 特点:用一些特定的符号来表示代码的操作,简化书写
* 所以学习正则表达式就是学习一些特定的符号的使用
* 好处:可以简化对字符串的复杂操作
* 弊端:符号定义越多,正则越长,阅读性越差
*
* 具体操作功能:
* 1.匹配:String类中的matches()方法
* matches(String regex) 告知此字符串是否匹配给定的正则表达式。返回boolean类型的值
* matches()方法用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
*/
package 类;

import java.util.regex.*;

public class 正则表达式 {

public static void main(String[] args) {
// TODO Auto-generated method stub

正则表达式 d = new 正则表达式();

//匹配手机号码
d.Tel();
//匹配QQ号码
d.QQ();
//匹配邮箱
d.Email();
}
//匹配手机号
public void Tel() {
/*
* 定义规则如下:
* 手机号码只能是11位,第一位只能是1,第二位可以是3,5,7;
* 后面9位可以是0-9的任意一个数字
*/
String tel = "13254687601";

//{9}表示\\d正好出现9次
String telReg = "1[357]\\d{9}";

System.out.println("验证电话 : " + tel.matches(telReg));

}

public void QQ() {
/*
* 定义规则如下:
* 第一位不能是0,QQ号码的长度是6-15位;
* 除第一位以外的位可以是0-9的任意一个数字
*/
String qq = "1367387530";
//{5,14}表示\\d出现的次数在5-14之间
String qqReg = "[1-9]\\d{5,14}";
System.out.println("验证QQ : " + qq.matches(qqReg));
}

public void Email() {
/*
* 定义规则如下:
* 17839192987@163.com
* 如上面这种形式,@前面的位数在5-15之间,为大写字母小写字母和数字三种形式;
* @后面.前面的位数在2-3位之间,只能是qq或者163;
* .后面的为com,而且只能是com
*/

String email = "17839192987@qq.com";
String []emialReg = {"\\w{5,15}+@163.com","\\w{5,15}+@qq.com"};

boolean flag = email.matches(emialReg[0]);

//如果不是163邮箱,则继续验证是否是qq邮箱
if(flag == false)
flag = email.matches(emialReg[1]) ? true : false;
System.out.println("验证邮箱 : " + flag);
}
}

运行结果验证电话 : true验证QQ : true验证邮箱 : true