正则表达式
1.正则表达式的概述和简单使用是指用来描述或匹配字符串是否符合自己的语法规则,其实就是一种规则,有自己特殊用途 比如注册账号时,会限制用户名和密码的长度,这个限制长度就是正则表达式做的
1 /** 2 * B:案例演示 3 * 需求:校验qq号码. 4 * 1:要求必须是5-15位数字 5 * 2:0不能开头 6 * 3:必须都是数字 7 */ 8 9 demo1(); 10 // 正则表达式的匹配规则,用正则表达式实现 11 String regex = "[1-9]d{4,14}"; 12 13 System.out.println("0123456".matches(regex)); //false 14 System.out.println("a1234567".matches(regex)); //false 15 System.out.println("930275779".matches(regex)); //true 16 System.out.println(Pattern.matches(regex,"1234567"));//true 17 } 18 19 20 // 用已循环和if语句实现 21 public static void demo1() { 22 System.out.println(checkQQ("012345")); //false 23 System.out.println(checkQQ("930275779")); //true 24 System.out.println(checkQQ("1234567891032489"));//false 25 System.out.println(checkQQ("2346")); //false 26 } 27 public static boolean checkQQ(String s){ 28 boolean flag = true; 29 //限制长度 5~15 之间 30 if(s.length()>=5 && s.length()<=15){ 31 //不能以o开头 32 if(!(s.startsWith("0"))){ 33 // 把字符串转为字符数组 34 char[] chars = s.toCharArray(); 35 //循环录入要判断的字符数组 36 for(int i=0; i<chars.length; i++){ 37 char ch = chars[i]; 38 //输入的数字字符必须是0~9 39 if(!(ch>=‘0‘ && ch<=‘9‘)){ 40 flag = false; 41 break; 42 } 43 } 44 }else { 45 flag = false; //数字以0开头 46 } 47 }else { 48 flag = false; // 长度不合法 49 } 50 return flag; 51 } ? 2.字符类演示/** ?* ?[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](减去) ? */ ? 1 public static void main(String[] args) { 2 // demo1(); 3 // demo2(); 4 demo3(); 5 // demo4(); 6 // demo5(); 7 // demo6(); 8 } 9 10 public static void demo1() { 11 String regex = "[abc]"; // []表示单个字符 只有abc这几个单个字符可以匹配 12 System.out.println("a".matches(regex)); // true 13 System.out.println("b".matches(regex)); // true 14 System.out.println("++++++++++"); 15 System.out.println("m".matches(regex)); // false 16 System.out.println("n".matches(regex)); // false 17 18 } 19 20 public static void demo2() { 21 String regex = "[^abc]"; //除了abc的单个字符以外,任何单个字符都能满足匹配 22 System.out.println("a".matches(regex)); // false 23 System.out.println("m".matches(regex)); // true 24 System.out.println("sd".matches(regex));//false 是两个字符 25 } 26 27 private static void demo3() { 28 // 取交集,也就是两个范围内,相同的单个字符 "[a-z&&[def]]"也是一样 29 String regex = "[ac&&[dc]]"; 30 System.out.println("a".matches(regex)); 31 System.out.println("c".matches(regex)); 32 System.out.println("%".matches(regex)); // false 33 } 34 35 private static void demo4() { 36 String regex = "[a-d[m-p]]"; //取并集,就是两个范围内的所有单个字符 37 System.out.println("a".matches(regex)); 38 System.out.println("m".matches(regex)); 39 System.out.println("n".matches(regex)); 40 } 41 42 private static void demo6() { 43 String regex = "[a-z&&[^bc]]"; //在a-z的单个字符内,除去 bc 这两个单个字符以外,都匹配 44 System.out.println("a".matches(regex)); 45 System.out.println("b".matches(regex)); 46 System.out.println("1".matches(regex)); 47 } ? 3.预定义字符类 /** *? .? 代表任意字符,一个点代表一个字符 ? 1 public static void main(String[] args) { 2 demo1(); 3 demo2(); 4 demo3(); 5 demo4(); 6 demo5(); 7 demo6(); 8 } 9 10 private static void demo6() { 11 // W 取反 非单词字符 12 String regex = "w"; //单词字符 13 System.out.println("a".matches(regex)); // true 14 System.out.println("z".matches(regex)); // true 15 System.out.println("_".matches(regex)); // true 16 System.out.println("9".matches(regex)); // false 17 } 18 19 private static void demo5() { 20 String regex = "S"; // 取反 ,非空白字符 21 System.out.println(" ".matches(regex)); // 空格 false 22 System.out.println(" ".matches(regex)); // tab键 false 23 System.out.println("a".matches(regex)); // true 24 } 25 26 private static void demo4() { 27 String regex = "s"; // 匹配空白 28 System.out.println(" ".matches(regex)); //true 29 System.out.println(" ".matches(regex)); // 一个tab键 true 30 System.out.println(" ".matches(regex)); // 四个空格 false 31 } 32 33 private static void demo3() { 34 String regex = "D"; // [^0-9]取反,除了数字字符以外都为true 35 System.out.println("0".matches(regex)); // false 36 System.out.println("9".matches(regex)); // false 37 System.out.println("a".matches(regex)); // true 38 } 39 40 private static void demo2() { 41 String regex = "d"; // 代表转义字符,如果想表示d的话,需要d 代表[0-9]单个的数字字符, 42 System.out.println("0".matches(regex)); // true 43 System.out.println("a".matches(regex)); // false 44 System.out.println("9".matches(regex)); // true 45 } 46 47 private static void demo1() { 48 String regex = "..";// 点代表任意字符, 一个点代表一个字符,两个点代表两个字符。 49 System.out.println("a".matches(regex)); // f 50 System.out.println("ab".matches(regex)); // t 51 } ? 4.数量词
* A:Greedy 数量词? * X? X,一次或一次也没有 * X* X,零次或多次 * X+ X,一次或多次 * X{n} X,恰好?n 次? * X{n,} X,至少?n 次? * X{n,m} X,至少?n 次,但是不超过?m 次 ? 1 public static void main(String[] args) { 2 demo1(); 3 demo2(); 4 demo3(); 5 demo4(); 6 demo5(); 7 demo6(); 8 } 9 10 private static void demo6() { 11 String regex = "[abc]{5,15}";//范围内的单个字符出现了至少5次,但不超过15次 12 System.out.println("abcba".matches(regex)); //true 13 System.out.println("abcbaabcabbabab".matches(regex)); //true 14 System.out.println("abcb".matches(regex)); //false 15 System.out.println("abcbaabaabcbaaba".matches(regex)); //false 16 } 17 18 public static void demo5() { 19 String regex = "[abc]{5,}"; //范围内的单个字符至少出现了5次, 20 System.out.println("abcba".matches(regex)); //true 21 System.out.println("abcbaabcabbabab".matches(regex));//true 22 System.out.println("abcb".matches(regex)); //false 23 System.out.println("abcbaaba".matches(regex)); //true 24 } 25 26 public static void demo4() { 27 String regex = "[abc]{5}"; //范围内的单个字符 恰好出现了5次, 28 System.out.println("abcba".matches(regex)); //true 29 System.out.println("abcbaabcabbabab".matches(regex)); //false 30 System.out.println("abcb".matches(regex)); //false 31 System.out.println("abcbaaba".matches(regex)); //false 32 } 33 34 public static void demo3() { 35 String regex = "[abc]+"; //范围内的单个符出现了一次或多次 36 System.out.println("".matches(regex)); //false 一次没出现false 37 System.out.println("a".matches(regex)); //true 38 System.out.println("aaaaabbbbccccc".matches(regex));//true 39 } 40 41 public static void demo2() { 42 String regex = "[abc]*"; // 范围内的单个字符只出现零次或多次 出现一次也正确 43 System.out.println("".matches(regex)); //true 44 System.out.println("abc".matches(regex)); //true 45 System.out.println("a".matches(regex)); //true 46 System.out.println("v".matches(regex)); //false 47 } 48 49 public static void demo1() { 50 String regex = "[abc]?"; // 范围内的单个字符只出现了一次或一次也没有 空的也是true 51 System.out.println("a".matches(regex)); //true 52 System.out.println("b".matches(regex)); //trrue 53 System.out.println("d".matches(regex)); //false 54 System.out.println("".matches(regex)); //true 55 } ? 5.正则表达式的分割功能/**
|
- RT5350配置uboot 支持8M的Flash
- xcode – pageViewController setViewControllers崩溃与“无
- C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印
- struct members使用循环赋值
- c – std :: unordered_multimap的存储桶是否只包含具有等效
- 2013 duilib入门简明教程 -- XML基础类(7)
- Swift 2 版 Core Data 封装库
- c# – 更改outlook MailItem图标
- c# – IValidatableObject.Validate()中的本地化
- ruby-on-rails – 可以生成脚手架将控制器放在命名空间中吗