如何校验一个QQ号码案例

这篇博客介绍了如何使用Java的正则表达式进行QQ号码、手机号码和邮箱的合法性校验。首先,通过示例代码展示了如何检查QQ号码是否符合5到15位且不能以0开头的条件;接着,利用正则表达式简化了校验过程。此外,还演示了正则表达式在判断手机号码和邮箱格式正确性上的应用。最后,提到了正则表达式的其他功能,如字符串分割和替换,并给出了相应的代码实例。
摘要由CSDN通过智能技术生成

如何校验一个QQ号码案例

校验QQ号码:
1:要求必须是5到15位数字
2:0不能开头
分析:
A:键盘录入一个QQ号
B:写一个功能实现校验
C:调用功能,输出结果

package itcast01;
import java.util.Scanner;
public class RegexDemo {
public static void main(String[] args) {
    try (//创建键盘录入对象
		Scanner sc = new Scanner(System.in)) {
			System.out.println("请输入你的QQ号:");
			String qq = sc.nextLine();
			
			System.out.println("CheckQQ:"+checkQQ(qq));
		}
	}

/*
 *   写一个功能实现校验 
 *   两个明确:
 *          明确返回值类型:Boolean
 *          明确参数列表:String qq
 */
public static boolean checkQQ(String qq) {
	boolean flag = true;
	       //校验长度
     	  if(qq.length()>=5 && qq.length()<=15) {
		 //0不能开头
		 if(!qq.startsWith("0")) {
		//必须是数字
		char[] chs = qq.toCharArray();
		for (int x =0;x<chs.length;x++) {
		char ch = chs[x];
		if(!Character.isDigit(ch)) {
		flag = false;
		break ;
		}}}
		else{
		flag = false;
			}
		     }else 
		     {
			flag = false;
		     }
         return flag;
}}

正则表达式的概述和基本使用

正则表达式
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
即符合一定规则的字符串

package itcast01;
import java.util.Scanner;
public class RegexDemo2 {
public static void main(String[] args) {
	try (Scanner sc = new Scanner(System.in)) {
		System.out.println("请输入你的QQ号:");
		String qq = sc.nextLine();
		System.out.println("CheckQQ:"+checkQQ(qq));
	}
}
public static boolean checkQQ(String qq) {
//	String regex = "[1-9][0-9]{4,14}";
//	//public boolean matches (String regex)告知此字符串是否匹配给定的正则表达式
//	boolean flag= qq.matches(regex);
//	return flag ;
//	return qq.matches("[1-9][0-9]{4,14}");
	return qq.matches("[1-9]\\d{4,14}");
}
}

正则表达式的组成规则

A:字符
x 字符 x .举例:‘a’表示字符a
\反斜线字符
\n 新行(换行)符(’\u000A’)
\r 回车符(‘\u000D’)

B:字符类
[abc] a,b,或从(简单类)
[^abc] 任何字符,除了a,b或从(否定)
[a-zA-Z] a到z或A到Z,两头的字母包括在内(范围)

C:预定义字符类
. 任何字符。我的就是,字符本身,怎么表示呢? .
\d 数字: [0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须由这些东西组成

D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方
举例:hello world?haha;xixi

E:Greedy 数量词
X?X,一次或一次也没有
X*X ,零次或多次
X+X,一次或多次
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,至少n次,但是不超过m次

正则表达式的应用

判断功能

public boolean matches(String regex)

分割功能

public String[] split(String regex)

替换功能

public String replaceAll(String regex,String replacement)

获取功能

Pattern和类的使用

判断功能
String类的public boolean matches(String regex)

需求:
判断手机号码是否满足要求?

分析:
A:键盘录入手机号码
B:定义手机号码的规则
15229294562
12546789256
12345678926
12976758204
17729876053
15229095090
C:调用功能,判断即可
D:输出结果

package itcast02;
import java.util.Scanner;
public class RegexDemo {
public static void main(String[] args) {
	//键盘录入数据
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入你的手机号码");
	String phone = sc.nextLine();
	//定义手机号的规则
	String regex  = "1[38]\\d{9}";
	//调用功能,判断即可
	boolean flag = phone.matches(regex);
	//输出结果
	System.out.println("flag:"+flag);
}   
}

校验邮箱
分析:
A:键盘录入邮箱
B:定义邮箱的规则
15178065800@qq.com
liuyi@163.com
linqinxia@126.com
fenqingyang@sina.com.cn
fqy@itcast.cn
C:调用功能,判断即可
D:输出结果

package itcast02;
import java.util.Scanner;
public class RegexTest {
public static void main(String[] args) {
	//键盘录入邮箱
	Scanner sc = new Scanner (System.in);
	System.out.println("请输入邮箱:");
	String email = sc.nextLine();
	
	//定义邮箱的规则
	//String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+";
	 String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+";
	//调用功能,判断即可
	boolean flag = email.matches(regex);
	//输出结果
	System.out.println("flag:"+flag);	
}
}

分割功能:
String类的public String[] split(String regex)
public String[] split(String regex)
举例:
百合网,世纪佳缘网,珍爱网, QQ
搜索好友
性别:女
范围:“18-24”
age>=18 && age<=24

package itcast03;
import java.util.Scanner;
public class RegexDemo {
public static void main(String[] args) {
	//定义一个年龄搜索范围
	String  ages = "18-24";
	
	
	//定义规则
	String regex = "-";
	
	//调用方法
	String[] strArray = ages.split(regex);
	
//	//遍历
//	for (int x =0;x<strArray.length;x++) {
//		System.out.println(strArray[x]);
//	
//	}
	//如何得到int类型的呢?
	int starAge = Integer.parseInt(strArray[0]);
	int endAge = Integer.parseInt(strArray[1]);
	 //键盘录入年龄
	Scanner sc = new Scanner (System.in);
	System.out.println("请输入你的年龄:");
	int age = sc.nextInt();
	
	if(age >= starAge&&age<=endAge) {
		System.out.println("你就是我想要的");	
	}else {
		System.out.println("不符合我的要求:gun");
	}
	}
    }

分割功能练习

package itcast03;
public class RegexDemo2 {
public static void main(String[] args) {
	//定义一个字符
	String s1 = "aa,bb,cc";
	//直接分割
	String [] str1Array = s1.split(",");
	for (int x = 0;x < str1Array.length;x++) {
		System.out.println(str1Array[x]);
	}
	System.out.println("---------");
	
	String s2 = "aa.bb.cc";
	String [] str2Array = s2.split("\\.");
	for (int x = 0;x < str2Array.length;x++) {
		System.out.println(str2Array[x]);
	}
	System.out.println("---------");
	
	String s3 = "aa   bb  cc";
	String [] str3Array = s3.split("    +");
	for (int x = 0;x < str3Array.length;x++) {
		System.out.println(str3Array[x]);
	}
	System.out.println("---------");
	
	String s4 = "C:\\Windows\\addins";
	String [] str4Array = s4.split("\\\\");
	for (int x = 0;x < str4Array.length;x++) {
		System.out.println(str4Array[x]);
	}
	System.out.println("---------");
}
}

分割练习:
我有如下一个字符串:“91 27 46 38 50”
请写代码实现最终输出结果是:“27 38 46 50 91”

分析:
A:定义一个字符串
B:把字符串进行分割,得到一个字符串数组
C:把字符串数组变换成int数组
D:对int数组排序
E:把排序后的int数组在组装成一个字符串
F:输出字符串

package itcast03;
import java.util.Arrays;
public class RegexTest {
public static void main(String[] args) {
	//定义字符串
	String s = "91 27 46 38 50";
	//把字符串进行分割,得到一个字符串数组
	String [] strArray = s.split(" ");
	//把字符串数组变换成int数组
	int[] arr = new int [strArray.length];
	for(int x =0;x<arr.length;x++) {
		arr[x] = Integer.parseInt(strArray[x]);
		
		
	}
	//对int数组排序
	Arrays.sort(arr);
	//把排序后的int数组在组装成一个字符串
	StringBuilder sb = new StringBuilder();
	for (int x =0;x<arr.length;x++) {
		sb.append(arr[x]).append(" ");
		
	//转化为字符串
		String result = sb .toString().trim();
		//输出字符串
		System.out.println("result:"+result);
		
	}
}
}

替换功能
String类的public String replaceAll(String regex,String replacement)
使用给定的replacement 替换此字符串所有匹配给定的正则表达式的子字符串

package itcast04;
public class RegexDemo {
public static void main(String[] args) {
	//定义一个字符串
	String s = "helloqq123456789worldkh987456123java";
	//我要去除所有的数字,用*给替换掉
	//String regex = "\\d+";
//	String regex = "\\d";
//	
//	String ss = "*";
	//直接把数字干掉
	String  regex = "\\d+";
	String ss = "";
	String result = s.replaceAll(regex,ss);
	System.out.println(result);
}
}

获取功能:
Pattern和Matcher类的使用

模式和匹配器的基本使用顺序

package itcast05;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
	//模式和匹配器的典型调用顺序
	//把正则表达式编译成模式对象
	Pattern p = Pattern.compile("a*b");
	//通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串
	Matcher m = p.matcher("aaaaab");
	//调用匹配器对象的功能
	
	boolean b = m.matches();
	System.out.println(b);
	
	//这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做
	String s = "aaaaab";
	String regex = "a*b";
	boolean bb = s.matches(regex);
	System.out.println(bb);
}
}

获取功能练习:
获取下面这个字符串中由三个字符组成的单词
da jia ting wo shuo , jin tian xia da yu ,bu shang wan zi xi , gao xing ma ?

package itcast05;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo2 {
public static void main(String[] args) {
	//定义字符串
	String s ="da jia ting wo shuo , jin tian xia da yu ,bu shang wan zi xi , gao xing ma ?";
	//规则
	String regex = "\\w{3}";
	//把规则编译成模式对象
	Pattern p =Pattern.compile(regex);
	//通过模式对象得到匹配器对象
	Matcher m = p.matcher(s);
//	//调用匹配器对象的功能
//	//public boolean find()
//	boolean flag = m.find();
//	System.out.println(flag);
//	//如何得到值呢?
//	//public String group()
//	String ss = m.group();
//	System.out.println(ss);
//	
//	//再来一次
//	flag = m.find();
//	System.out.println(flag);
//	ss = m.group();
//	System.out.println(ss);
//	
	while (m.find()) {
		System.out.println(m.group());
	}
	//注意:一定要先find(),然后才能group());
	  //String ss = m.group();
     //System.out.println(ss);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值