常见对象·正则表达式 和 其他对象
正则表达式的概述和简单使用
* A:正则表达式
* 是指一个用来描述或者匹配一系列符合猴哥语法规则的字符串的单个字符串。其实就是一种规则,有自己的特殊应用
* 作用:比如注册邮箱,邮箱 有用户名和密码,一般会限制长度,这个限制长度的事情就是正则表达式做的
* B:案例演示
* 需求:
* 校验qq号
* 1、要求必须是5 - 15位的数字
* 2、不能是0开头
* 3、必须都是数字
* a:非正则表达式实现
* b:正则表达式实现
package com.heima.regex; public class Demo1_Regex { public static void main(String[] args) { System.out.println(checkQQ("0123")); // false System.out.println(checkQQ("a123456")); // false System.out.println(checkQQ("123456")); // true System.out.println(checkQQ("12345678910101010")); // false System.out.println("-----------------------------"); String regex = "[1-9]\\d{4,14}"; System.out.println("a12345".matches(regex)); // false System.out.println("12345".matches(regex)); // true System.out.println("012345".matches(regex)); // false System.out.println("345".matches(regex)); // false } /* * 分析校验qq号的方法: * 1、明确返回值类型:boolean * 2、明确参数列表:String qq */ public static boolean checkQQ(String qq) { boolean flag = true; // 如果校验不符合要求,就把flag重置为flase,否则直接返回 if (qq.length() >= 5 && qq.length() <= 15) { if (!qq.startsWith("0")) { char[] arr = qq.toCharArray();// 将字符串转换为字符数组 for (int i = 0; i < arr.length; i++) { char ch = arr[i];// 记录每一个字符 if (!(ch >= '0' && ch <= '9')) { flag = false; break; // 如果不符合要求,直接跳出 } } } else { flag = false;// 以0开头,不符合qq号的注册标准 } } else { flag = false; // 长度不符合 } return flag; } }Regex
字符类演示
* A:字符类
* [abc] :a、b或c (简单类)
* [^abc] :任何字符,除了a、b 或 c (否定)
* [a-zA-Z] :a到z 或者是 A到Z,两头的字幕包括在内 (范围)
* [0-9] :0到9的字符都包括
package com.heima.regex; public class Demo2_Regex { /* * 强调:中括号代表单个字符 * [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](减去) */ public static void main(String[] args) { // demo1(); // demo2(); // demo3(); // demo4(); // demo5(); // demo6(); // demo7(); } public static void demo7() { String regex = "[a-z&&[^m-p]]"; System.out.println("a".matches(regex)); // true System.out.println("m".matches(regex)); // false System.out.println("o".matches(regex)); // false } public static void demo6() { String regex = "[a-z&&[^bc]]"; System.out.println("a".matches(regex)); // true System.out.println("b".matches(regex)); // false System.out.println("1".matches(regex)); // false } public static void demo5() { String regex = "[a-z&&[def]]"; // 取交集 System.out.println("a".matches(regex)); // false System.out.println("d".matches(regex)); // true } public static void demo4() { String reString = "[a-d[m-p]]"; // 等于[a-dm-p] System.out.println("a".matches(reString)); // true System.out.println("m".matches(reString)); // true System.out.println("e".matches(reString)); // false System.out.println("q".matches(reString)); // false } public static void demo3() { String regexString = "[a-zA-Z]"; //范围内的字符,头尾都包括在内 System.out.println("a".matches(regexString)); // true System.out.println("z".matches(regexString)); // true System.out.println("A".matches(regexString)); // true System.out.println("Z".matches(regexString)); // true System.out.println("1".matches(regexString)); // false } public static void demo2() { String regex = "[^abc]"; // 除了a或b或c都行 System.out.println("d".matches(regex)); // true System.out.println("a".matches(regex)); // false System.out.println("1".matches(regex)); // true System.out.println("%".matches(regex)); // true System.out.println("10".matches(regex));// 10 代表 1字符 和 0字符,多个字符 -> false System.out.println("".matches(regex));// 空字符串 -> false } public static void demo1() { String regex = "[abc]"; // []表示单个字符,代表a或者b或者c System.out.println("a".matches(regex)); // true System.out.println("b".matches(regex)); // true System.out.println("c".matches(regex)); // true System.out.println("d".matches(regex)); // false } }Regex