正则表达式的概述和简单使用
1.什么是正则表达式? 正确规则的表达式 规则java给我们定的;
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
正则表达式:正确规则的表达式,他是一个独立的语法,很多语言都支持,他的作用就是用来校验,一段数据符不符合我定义的规则。
2.案例演示 需求:校验qq号码.
1:要求必须是5-15位数字
2:0不能开头
a:非正则表达式实现
b:正则表达式实现
public class MyTest {
public static void main(String[] args) {
//非正则表达式实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码");
String qqNum = sc.nextLine();
// boolean b = checkQQNum(qqNum);
boolean b = checkQQNum2(qqNum);
if (b) {
System.out.println("QQ号码规则正确");
} else {
System.out.println("QQ号码规则有误");
}
}
private static boolean checkQQNum2(String qqNum) {
//定义一个正则表达式
String regx="[1-9][0-9]{4,14}";
boolean matches = qqNum.matches(regx);
return matches;
}
private static boolean checkQQNum(String qqNum) {
//定义一个标记
boolean flag = false;
//校验位数
if (qqNum.length() >= 5 && qqNum.length() <= 15 && !qqNum.startsWith("0")) {
//下来校验每个位数是否是数字
for (int i = 0;
i < qqNum.length();
i++) {
char ch = qqNum.charAt(i);
if (ch >= '0' && ch <= '9') {
flag = true;
} else {
flag = false;
break;
//终止循环
}
}
} else {
flag = false;
}
return flag;
}
}
3.正则表达式的组成规则 【Java学习总结--022正则表达式】规则字符在java.util.regex Pattern类中
A:字符
x 字符 x。举例:‘a’表示字符a
\ 反斜线字符。
\n 新行(换行)符 (’\u000A’)
\r 回车符 (’\u000D’)
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? .
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha; xixi
E:Greedy 数量词
X? X,一次或一次也没有 比如""空串 就是没有
X* X,零次或多次 大于等于1次 都算多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
public class MyTest {
public static void main(String[] args) {
String regx = "a";
regx = "[abcdef]";
//运行出现列表中的某一个字符
regx = "[a-z]";
//允许出现26个小写字母的任意一个
regx = "[A-Za-z]";
regx = "[0-9]";
regx = "[a-zA-Z0-9]";
regx = "[^0-9]";
//把不允许出现我列表中的任意一个
regx = ".";
//通配单个任意字符
regx = "\\.";
// \\ 转意字符 \\. 这个意思就是匹配点本身
regx = "\\|";
regx = "\\d";
//"跟"[0-9]意思一样
regx = "\\w";
//跟 [a-zA-Z_0-9] 意思一样
regx = "[a-z]+";
//+ 可以出现一个或多个
regx = "a?";
//一次或一次也没有 比如 "" 空串 就是没有
regx = "[a-z]*";
//零次或多次大于等于1次 都算多次
regx = "[a-z]{6}";
//正好6次
regx = "[0-9]{6,}";
//至少6个
regx = "[0-9]{6,16}";
//大于等于 6 小于等于16
boolean flag = "123499988766454343".matches(regx);
System.out.println(flag);
String regx2 = "[1-9][0-9]{4,14}";
//
}
}