一、正则表达式的概述和简单使用
(1):正则表达式:正确规则的表达式 规则java给我们定的
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
(2):案例演示
需求:校验qq号码.
1:要求必须是5-15位数字
2:0不能开头
a:非正则表达式实现
private static boolean checkQQ(String numQQ) {
// 校验位数
boolean b = false;
// 判断长度
if (numQQ.length() >= 5 && numQQ.length() <= 15) {
// 判断开头不能为0
if (!(numQQ.startsWith("0"))) {
// 判断每一位是不是数字
for (int i = 0; i < numQQ.length(); i++) {
char ch = numQQ.charAt(i);
if (ch >= '0' && ch <= '9') {
b = true;
} else {
b = false;
break; //一旦遇到不是数字的,就结束循环
}
}
} else {
b = false;
}
} else {
b = false;
}
return b;
}
b:正则表达式实现
private static boolean checkQQNumber2(String qqNum) {
//正则表达式 //规定QQ好的规则 6 - 12 位数字 0 不能开头
String regex="[1-9][0-9]{5,15}";
boolean b = qqNum.matches(regex);
return b;
}
二、正则表达式的组成规则
规则字符在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 次
三、正则表达式的使用案例
(1)校验用户邮箱是否满足要求
public class Checkmail {
public static void main(String[] args) {
/*
* 284309510@qq.com
* abcdd@163.com
* abc123@sina.com
* abc123@sina.cn
* abc123@sina.net
* abc123@sina.org
*
*
* */
String regx="[1-9a-zA-Z][0-9a-z_A-Z]{5,15}@[1-9a-z]{2,18}\\.(com|cn|net|org)";
boolean b = "abc123@sina.cn".matches(regx);
System.out.println(b);
}
}
(2)判断手机号码是否满足规则
public class Checkphonenum {
public static void main(String[] args) {
//校验手机号
//13259141515
String regx="[1][357896][0-9]{9}";
}
}
四、正则表达式的分割功能
public class MyDemo5 {
public static void main(String[] args) {
//A:
//正则表达式的分割功能 split () 方法
//String类的功能:public String[] split (String regex)
String username="张三=李四=王五=赵六";
String[] strings = username.split("=");
System.out.println(strings[0]);
System.out.println(strings[1]);
System.out.println(strings[2]);
System.out.println(strings[3]);
String str="abc122222sdfsdfsdf666666asdfasdfasf999777kkkkkk";
String[] strings1 = str.split("[0-9]+");
System.out.println(strings1[0]);
System.out.println(strings1[1]);
System.out.println(strings1[2]);
}
}
五、正则表达式的获取功能
public class MyDemo3 {
public static void main(String[] args) {
//与正则相关的替换功能
//A:
//正则表达式的替换功能
//String类的功能:public String replaceAll (String regex, String replacement)
String str="abc abdf";
String s = str.replaceAll(" +", "");
System.out.println(s);
String str2="asdfasdfasdf11332111asfdadsfasdf45555544asfadfadsf";
String s1 = str2.replaceAll("[0-9]+", "");
System.out.println(s1);
}
}