所谓的正则表达式:就是符合一定规则的字符串。
下面是正则表达式的一些规则:
1):特殊字符
\:反斜线
\r:回车
\n:换行
(2):字符类
[abc]:a,b或者c的任意一个。
[^abc]:除了a,b,c以外的字符。
[a-zA-Z]:包括了26个英文字母。
[0-9]:包括了0-9这个10个数字字符。
(3):预定义字符类
. 任意字符
\d 数字[0-9]
\D 非数字[^0-9]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
(4):边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
(5):Greedy 数量词
x? 0次或1次
x* 0次或多次
x+ 1次或多次
x{n} 恰好n次
x{n,} 至少n次
x{m,n} 至少m次,但不能超过n次
常用功能:
1:判断功能 String – matches
2:切割功能 String – split
3:替换功能 String – replaceAll
4:获取功能 Pattern -> Matcher : compile() find() group()
import java.util.Scanner;
/*
*
* 举例:校验qq号码.
* 1:要求必须是5-15位数字
* 2:0不能开头
*/
public class RegexDemo {
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);
//用正则表达式做
boolean flag2 = checkQq2(qq);
System.out.println(flag2);
}
private static boolean checkQq2(String qq) {
//定义正则表达式
String regex = "[1-9][0-9]{4,14}";
//public boolean matches(String regex)
boolean flag = qq.matches(regex);
return flag;
return qq.matches("[1-9][0-9]{4,14}");
return qq.matches("[1-9]\\d{4,14}");
}
}