概念
- 正则表达式即正确的规则,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
原始方法校验
- 需求:校验QQ号码
- 要求必须是 5-15位 数字
- 0 不能开头
import java.util.Scanner;
//使用原始的做法完成校验QQ号码
public class RefexDemo {
public static void main (String[] args) {
//获取键盘录入的QQ号码
Scanner sc = new Scanner(System.in);
//友情提示
System.out.println("请输入QQ号码:");
String qqStr = sc.nextLine();
boolean flag = checkQQ(qqStr);
}
private static boolean checkQQ(String qqStr){
//定义一个变量用来记录校验的结果
boolean flag = flase;
int length = qqStr.length();
if(length >= 5 && length <= 15){
//满足长度
//判断是否满足不以0开头
char firstChar = qqStr.charAt(0);
if(firstChar == '0'){
//说明是以0开头,就不满足条件
flag = false;
}else {
//不以0开头
//再去判断是不是数组
for (int i = 0; i < length; i++) {
char ch = qqStr.charAt(i);
if(ch >= '0' && ch <='9') {
flag = true;
// continue;
}else {
flag = false;
break;
}
}
}
}else{
//不满足长度
flag = false;
}
}
}
使用正则表达式校验
private static boolean checkQQByRegex(String QQStr){
String regex = "[0-9] [1-9] {4-14}";
}
作用
- 可以简化我们的开发
- 不仅Java可以用,C、C++或者js、php都支持正则表达式
组成规则
- 规则字符在javautil.regex Pattern中
字符
- x 字符 x。举例:’a’表示字符a
- \\ 反斜线字符。
- \n 新行(换行)符 (‘\u000A’)
- \r 回车符 (‘\u000D’)
字符类
- [abc] a、b 或 c(简单类)
- [^abc] 任何字符,除了 a、b 或 c(否定)
- [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
- [0-9] 0到9的字符都包括在内
预定义字符类
- . 任何字符。我的就是.字符本身,怎么表示呢? .
- \d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
- 在正则表达式里面组成单词的东西必须有这些东西组成
边界匹配器
- ^ 行的开头
- $ 行的结尾
- \b 单词边界
- 就是不是单词字符的地方。
- 举例:hello world?haha;xixi
- 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)
Demo1
- 需求:简单地判断手机号是否满足规则
Demo2
- 需求:校验邮箱
正则表达式的分割功能
public boolean matches(String regex)
- 分割以下字符串:
- 年龄范围”18-24”
- “ab cd ef”
- “ab cd ef”
- “ab cd-ef”
- “ab.cd.ef”
- “E://study//day01//a.txt”
给定字符串中的数字排序
- 需求:有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
正则表达式的替换功能
- String类的功能:public String replaceAll ( String regex , String replacement )