目录
一、概念
总结为:正确的规则匹配
正则表达式用来操作字符串数据
二、应用需求
校验QQ号:定义一个功能对QQ号进行校验,长度5~15,只能是数字,0不能开头。
纯Java代码编写:
public static void chekeQQ(String qq) {
int len = qq.length();
if (len >= 5 && len <= 15) {
if (!qq.startsWith("0")) {
try {
long l = Long.parseLong(qq);
System.out.println(l + ":正确");
} catch (NumberFormatException e) {
System.out.println(qq + ":含有非法字符");
}
} else {
System.out.println(qq + ":不能0开头");
}
} else {
System.out.println(qq + ":长度错误");
}
}
测试:
public static void main(String[] args) {
String qq = "01234567";
chekeQQ(qq);
}

使用正则表达式:
分析第一位不能使用0,第二位是0-9,整体长度是5-15。接下来编写正则
[1-9][0-9]{4,14}
编写代码并测试:
public static void main(String[] args) {
String qq = "01234567";
//正则表达式规则
String rege="[1-9][0-9]{4,14}";
//使用字符串的matches方法
boolean b = qq.matches(rege);
System.out.println(qq+":"+b);
}

二、常见的正则规则
在API中有java.util.regex.Pattern类,Pattern类描述了一些正则规则和常用的方法。
| 字符类 | |
|---|---|
| [abc] | a、b 或 c(简单类) |
| [^abc] | 任何字符,除了 a、b 或 c(否定) |
| [a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
| [a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
| [a-z&&[def]] | d、e 或 f(交集) |
| [a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
| [a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
| 预定义字符类 | |
|---|---|
| . | 任何字符(与行结束符可能匹配也可能不匹配) |
| \d | 数字:[0-9] |
| \D | 非数字: [^0-9] |
| \s | 空白字符:[ \t\n\x0B\f\r] |
| \S | 非空白字符:[^\s] |
| \w | 单词字符:[a-zA-Z_0-9] |
| \W | 非单词字符:[^\w] |
| 边界匹配器 | |
|---|---|
| ^ | 行的开头 |
| $ | 行的结尾 |
| \b | 单词边界 |
| \B | 非单词边界 |
| \A | 输入的开头 |
| \G | 上一个匹配的结尾 |
| \Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
| \z | 输入的结尾 |
| Greedy 数量词 | |
|---|---|
| X? | X,一次或一次也没有 |
| X* | X,零次或多次 |
| X+ | X,一次或多次 |
| X{n} | X,恰好 n 次 |
| X{n,} | X,至少 n 次 |
| X{n,m} | X,至少 n 次,但是不超过 m 次 |
在我们的QQ验证中就用到了数量次数X{n,m}。
现在以数量词为示例演示一些正则规则
1、一次或一次也没有
| X? | X,一次或一次也没有 |
单词 "o" 在str中只能出现一次。
String str="aob";
String pattern="ao?b";
boolean matches = str.matches(pattern);
System.out.println(str+":"+matches);

String str="aoooob";
String pattern="ao?b";
boolean matches = str.matches(pattern);
System.out.println(str+":"+matches);

2、X 至少出现n此,但是不超过m次
| X{n,m} | X,至少 n 次,但是不超过 m 次 |
String str="aoooob";
String pattern="ao{2,4}b";
boolean matches = str.matches(pattern);
System.out.println(str+":"+matches);

本文深入解析正则表达式的概念与常见规则,通过实例演示如何使用正则表达式校验QQ号的有效性,确保其符合特定的格式要求。
954

被折叠的 条评论
为什么被折叠?



