步骤:
(1)定义正则表达式
String regex=”要匹配的规则”;
(2)检验目标字符串是否与给定的正则表达式相匹配:public boolean matches(String regex)
goalString.matches(regex);
应用:
1, 效验QQ
import java.util.Scanner;
/**
* 需求:校验一个QQ号码
* 定义一个规则:1)由5到10为组成的数字
* 2)不能以0开头
* 分析:
* 1)键盘录入一个QQ号码,使用字符串接收
* 2)定义一个校验QQ的功能
* 3)在main()中调用返回boolean类型
* @author Apple
*/
public class RegexDemo2 {
public static void main(String[] args) {
//创建键盘了录入对象
Scanner sc = new Scanner(System.in) ;
//录入并接收数据
System.out.println("请您输入QQ号码: ");
String QQ = sc.nextLine() ;
boolean flag = checkQQ(QQ) ;
System.out.println("flag: "+flag);
}
public static boolean checkQQ(String qq){
/*//定义正则规则
String regex = "[1-9][0-9]{4,9}" ;
//public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
boolean flag = qq.matches(regex) ;
return flag ;*/
//直接返回
return qq.matches("[1-9]\\d{4,9}");
}
}
2, 效验手机号码
package org.westos.regex_01;
import java.util.Scanner;
/**
* 使用正则表达式校验手机号码:
* 规则:
* 手机号码:
* 13689257284
* 13688886666
* 13892866555
* 18992844422
* 13257222222
* ...
*
*1)创建键盘录入对象,录入手机号码
*2)定义正则规则:
*3)String类的特有功能
* public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
*4)输出
*
* @author Apple
*/
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][0-9]{9}" ;
//匹配当前正则表达式是否和录入的手机号符合
boolean flag = phone.matches(regex) ;
System.out.println("flag:"+flag);
}
}
3, 效验邮箱地址:
package regex;
import java.util.Scanner;
/**
* /**
* 需求:校验邮箱:
* QQ邮箱:
* 919081924@qq.com
* fengqingyang@163.com
* xxxxx@126.com
* zhangsan@westos.com
* lisi@sina.com
* wangwu@istone.com.cn....
* 分析:1)键盘录入邮箱
* 2)定义正则规则
* 3)使用String中的特有功能校验
* 4)输出即可
* @author Apple
*/
public class Emailregex {
public static void main(String[] args) {
System.out.println("请输入您的邮箱:");
Scanner sc=new Scanner(System.in);
String email=sc.nextLine();
//定义正则表达式
//String regex="[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z]{2,3})+";//X=(\\.[a-z] {2,3}) X+一次或多次com.cn...
String regex="\\w+@\\w{2,6}(\\.[a-zA-Z]{2,3})+";
//效验
boolean flag=email.matches(regex);
System.out.println("邮箱地址:"+flag);
}
}
4, String的分割功能:
public String[] split(String regex)
调用:
String goalString;//需要进行分割的字符串
//String regex=”要分割的规则”;//要分割的规则
String[] strArray=goalString.split(“要分割的规则”);
package regex;
import java.util.Scanner;
/**
* String的分割功能:
*
* public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串
* 返回值类型是一个字符串数组类型
*
* 应用场景:
* QQ,搜索好友,相亲网:世纪佳缘...
* 女 "18-24"
* String ages = "18-24" ;
* @author Apple
*/
public class SplitRegex {
public static void main(String[] args) {
//定义一个字符串
String ages = "18-24" ;
//定义正则规则
String regex = "-" ;
//public String[] split(String regex)
String[] strArray = ages.split(regex) ;
//如何得到当前字符数组中的元素(转换int类型的数据)
int startAge = Integer.parseInt(strArray[0]) ;
int endAge = Integer.parseInt(strArray[1]) ;
System.out.println();
//键盘录入一个年龄,属于int类型的数据
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//录入并接收数据
System.out.println("请您输入一个年龄:");
int age = sc.nextInt() ;
//判断是否符我们要找的一类人
if(age>=startAge && age<=endAge){
System.out.println("这就是我想要的...");
}else{
System.out.println("不是我们要找的...");
}
/**
* 运行结果:
* 请您输入一个年龄:
* 21
* 这就是我想要的...
*
*/
}
}
package org.westos.regex_02;
/**
* 分割功能的应用:
* @author Apple
*/
public class RegexDemo2 {
public static void main(String[] args) {
//定义个字符串
String str1 = "aa,bb,cc" ;
//使用分割功能
String[] strArray1 = str1.split(",") ;
//遍历字符串数组
for(int x = 0 ; x < strArray1.length; x ++){
System.out.println(strArray1[x]);
}
System.out.println("------------------");
//字符串:
String str2 = "aa bb cc" ;
//使用切割功能:
String[] strArray2 = str2.split(" +") ;
for(int x = 0 ; x <strArray2.length ; x++){
System.out.println(strArray2[x]);
}
System.out.println("--------------------");
String str3 = "aa.bb.cc" ;
//分割功能
String[] strArray3 = str3.split("\\.") ;
for(int x =0 ; x<strArray3.length ; x ++){
System.out.println(strArray3[x]);
}
//硬盘上的路径表现形式:用两个反斜线代表一个反斜线
//E:\\JavaSE\\JavaCode\\day13
String str4 = "E:\\JavaSE\\JavaCode\\day13" ;
//使用分割功能
String[] strArray4 = str4.split("\\\\") ;
for(int x = 0 ; x <strArray4.length ; x ++){
System.out.println(strArray4[x]);
}
}
}
5, String类中的替换功能
public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
package regex;
/**
* String类中的替换功能:和正则表达式有关系
* public String replaceAll(String regex,Stringreplacement)
* 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
*
* @author Apple
*/
public class replaceString {
public static void main(String[] args) {
// 定义一个字符串:
String str = "helloword123JavaSE45678Javaweb";
// 需求:让当前这个字符串中的数字不显示出来
// 定义当前大串中数字定义正则规则
// String regex = "[0-9]+" ;
String regex = "\\d+";
String s = "*";
// public String replaceAll(String regex,String replacement)
String result = str.replaceAll(regex, s);
System.out.println("result:" + result);
/**
* 运行结果:
* result:helloword*JavaSE*Javaweb
*/
}
}
package org.westos.regex_02;
import java.util.Arrays;
/**
* 我有如下一个字符串:"91 27 46 38 50"
请写代码实现最终输出结果是:"27 38 46 50 91"
分析:
1)定义这个字符串
2)使用分割功能分割成一个字符串数组
3)如何得到一个int类型数组:动态初始化定义int数组 int[] arr = new int[字符串数数组.length] ;
4)遍历int数组
获取每一个元素:arr[x] = Integer.parseInt(字符串数组对象[x])
5)排序:Arrays数组工具类型快速排序:sort(arr)
6)再去遍历int类型数组获取每一个元素,用字符串缓冲区来进行拼接
7)输出字符串
* @author Apple
*/
public class RegexTest {
public static void main(String[] args) {
//定义一个字符串
String str = "91 27 46 38 50" ;
//使用分割功能
String[] strArray = str.split(" ") ;
//定义一个int类型的数组,动态初始化
int[] arr = new int[strArray.length] ;
//遍历int类型的数组
for(int x = 0 ; x < arr.length ; x ++){
arr[x] = Integer.parseInt(strArray[x]) ;
}
//使用Arrays数组工具类型进行操作
Arrays.sort(arr) ;
//创建StringBuilder缓冲区对象
StringBuilder sb = new StringBuilder() ;
//再去遍历int类型的数组,目的使用为了拼接
for(int x = 0 ; x < arr.length ; x ++){
//使用追加功能
sb.append(arr[x]).append(" ") ;
}
//要将字符串缓冲转换成String类型,并且去除两端空格
String result = sb.toString().trim() ;
System.out.println("result:"+result);
}
}