正则表达式,就是一套独立规则规范,可以来匹配字符串。
Java的String类中,有一个方法,boolean matches(String regax) : 判断当前字符串是否匹配指定的正则表达式,如果匹配则返回true,否则返回false。
常用字符(规则):
字符 | |
---|---|
x | 字符 x (即是,a就是a,b就是b,什么字符就是什么字符) |
\\ | 反斜线字符(两个\\代表一个\) |
字符类 | |
---|---|
[abc] | a、b 或 c(简单类)(或者是a,或者是b,或者是c,a | | b | | c)(其中之一) |
[^abc] | 任何字符,除了 a、b 或 c(否定)(非的概念,除了a,b,c以外的) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
预定义字符类 | |
---|---|
. | 代表任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9](代表是上述字符类的一个特定格式,0-9的范围) |
\D | 非数字: [^0-9](指非0-9数字以外的) |
\s | 空白字符:[ \t\n\x0B\f\r](是否是特定的空白字符格式) |
\S | 非空白字符:[^\s](非空,非空) |
\w | 单词字符:[a-zA-Z_0-9](小写字母与大写字母,并且0-9的数字,相当于[0-9a-zA-Z],匹配字母或数字或下划线或汉字) |
\W | 非单词字符:[^\w] |
Greedy 数量词(后面跟符号,代表此字母的不同数量情况) | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
例如:校验一个字符串是否符合规则(必须是5-15位,0不能开头,必须都是数字)
String qq = "12345";
//必须是5-15位,0不能开头,必须都是数字
boolean flag = qq.matches("[1-9][0-9]{4,14}");
System.out.println(flag);
意思是,第一位是范围是1-9,第二位范围是0-9,跟上一个大括号范围{4,14},范围X{N,M}意思是,后续至少有4个0-9的数字,但是不超过 14个,加上第一位数,满足5-15位数的规定。