正则表达式其实就是进行字符串匹配的式子
它的标准形式如下
匹配字符串由三个字符组成
// 第一个字符: a/b/c
// 第二个字符: 3/4/6/7
// 第三个字符: o/p/q
String str = "566";
// 指定正则表达式的规则
Pattern p = Pattern.compile("[abc][3467][opq]");
// 将规则和要判断的字符串进行关联
Matcher m = p.matcher(str);
// 进行判断
System.out.println(m.matches());
实际上我们也可以直接调用String的matches()方法进行匹配
System.out.println(str.matches("[abc][3467][opq]"));
其他的一些技巧如下
// 判断由一个小写字母组成的字符串
System.out.println(str.matches("[a-z]"));
// 判断由一个字母组成的字符串(只要是连续范围即可 [m-x])
// 如果是数字[0-9]
System.out.println(str.matches("[a-z][A-Z]"));
// 判断由一个字符组成的字符串,这个字符不能是a/b/c
System.out.println(str.matches("[^abc]"));
// . 通配符 可以代表任意字符
// 匹配由3个字符组成的字符串
// 开头是数字 结尾是字母
System.out.println(str.matches("\\d.[a-zA-Z]"));
// 匹配 .
System.out.println(str.matches("\\."));
// 匹配 \
System.out.println(str.matches("\\\\"));
// ab abb abbb abbbb abbbbb...
// + 表示之前的字符至少出现1次 >= 1
System.out.println(str.matches("ab+"));
// 匹配由字母开头后续是数字的字符串
System.out.println(str.matches("[a-zA-Z]\\d+"));
// 由数字作为头和尾的字符串
// * 表示之前的字符可有可无 >= 0
System.out.println(str.matches("\\d.*\\d"));
// 匹配一个不超过两位的数字组成的字符串
// ? 表示之前的字符最多出现一次 <= 1
System.out.println(str.matches("\\d\\d?"));
// + * ? 这三个数量词字符后面只能出现一次