if (phone.matches(“\w{1,30}@[a-zA-Z0-9]{2,20}(\.[a-zA-Z0-9]{2,20}){1,2}”))
\ w是表示后面要匹配数字,字母,下划线
匹配邮箱的正则:正则中的{1,30} 是匹配数字出现的次数(大于1一次,小于30次),【】号表示的是匹配的类型(小写a到z,大写A-Z,数字0-9) {2,20}表示出现的次数:@ 后面的qq 表示 出现两次
(.[a-zA-Z0-9]{2,20}){1,2} 这里的{1,2} 表示括号中的(.[a-zA-Z0-9]{2,20})匹配的域名,要么出现一次要么出现两次
package com.itheima.d6_regex;
import java.util.Scanner;
public class RegexTest3 {
public static void main(String[] args) {
// 目标: 校验 手机号 邮箱 电话号码
checkPhone();
checkTel();
}
// 定义一个手机号校验的方法
public static void checkPhone(){
Scanner sc = new Scanner(System.in);
while (true) { // 定义一个死循环,如果不成功,就一直判断
System.out.println("请您输入您的注册手机号码:");
String phone = sc.next();
// 判断手机号的格式是否正确
if (phone.matches("1[3-9]\\d{9}")){ // 第一位是1 第二位范围是3-9 剩下的9位匹配数字(出现9次)
System.out.println("手机号格式正确,注册完成");
break; // 判断成功,跳出当前循环(while)
}else {
System.out.println("格式有误!");
}
}
}
public static void checkEmail(){ // 匹配邮箱
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入您的注册邮箱:");
String email = sc.next();
// 判断邮箱格式是否正确 2894266590@qq.com
// \w 匹配数字字母下划线
if (email.matches("\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}")){// 单独一个小数点表示任意一个字符 所以要加\转义, 但是还要再加\,代表就是一个斜杠
//(\.[a-zA-Z0-9]{2,20}){1,2} 这里的{1,2} 表示括号中的(\.[a-zA-Z0-9]{2,20})匹配的域名,要么出现一次要么出现两次
System.out.println("邮箱格式正确");
break;
}else {
System.out.println("邮箱格式错误");
}
}
}
// 定义一个校验电话(座机)的正则
public static void checkTel(){
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入您的电话号码:");
String tel = sc.next();
// 判断邮箱格式是否正确 027-3572457
// 这里 -?后面加一个问号?代表:这个 - 出现一次,或者一次都不
if (tel.matches("0\\d{2,6}-?\\d{5,20}")){ // 匹配后面这个数字
System.out.println("格式正确,注册完成");
break;
}else {
System.out.println("格式错误");
}
}
}
}