一、初步认识
正则表达式是由一些特定的字符组成,代表一个规则,可以用来检验数据格式是否合法,也可以在一段文本中查找满足要求的内容。
如果使用代码检验数据是否正确:
java
public class RegexTest1 {
public static void main(String[] args) {
//需求:检验QQ号是否正确,全是数字不能以0开头,长度6-20
System.out.println(checkQQ(null));
System.out.println(checkQQ("3563gjhg88"));
System.out.println(checkQQ("764765467"));
}
public static boolean checkQQ(String qq){
//1.判断qq号码是否为null
if(qq == null || qq.startsWith("0") || qq.length()<6 || qq.length()>20){
//String提供的一个startWith()方法
return false;
}
//2.判断qq号码中全是数字
// 比如qq号是2894qqi
//遍历字符
for (int i = 0; i < qq.length(); i++) {
//根据索引提取当前位置处的字符
char ch = qq.charAt(i);
//需要判断ch记录的字符,如果不是数字,就不合法,底层比较编号
if(ch < '0' || ch > '9'){
return false;
}
}
return true;
}
}
使用正则表达式:
二、书写规则
String提供了一个匹配正则表达式的方法: 图片来源heimait
\\d才会当成\d使用
(?i)表示忽略大小写
三、应用案例
检验手机号码和邮箱是否正确:
java
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
// checkPhone();
checkMail();
}
public static void checkPhone(){
while (true) {
System.out.println("请输入电话号码");
Scanner sc = new Scanner(System.in);
String phone = sc.next();
//17728365549 010-8818339 010293737
if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1,9]\\d{4,19})")){
System.out.println("输入的号码没有问题");
break;
}else{
System.out.println("输入的号码有问题,请重新输入号码");
}
}
}
public static void checkMail(){
while (true) {
System.out.println("请输入邮箱");
Scanner sc = new Scanner(System.in);
String mail = sc.next();
//1241213254@qq.com 1422341@qq.com hekiii@iaii.com.cn
if(mail.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")){
System.out.println("输入的邮箱没有问题");
break;
}else{
System.out.println("输入的邮箱有问题,请重新输入邮箱");
}
}
}
}
查找信息:
1.定义查找规则 String regex = " .... "
2.把正则表达式封装成一个Pattern对象 Pattern pattern = Pattern.compile(regex)
3.通过pattern对象去获取查找内容的匹配器对象 Matcher matcher = pattern.matcher(data)
4.定义一个循环开始爬取信息
while (matcher.find()){String rs = matcher.group(); rs.sout}