• 1. 正则表达式基础知识什么是正则表达式 假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。如下图: 10/15/2018Struts实训-正大软件学院
  • 2. 开始^与结束符号$^表示一个单词的开始 $表示一个单词的结束 看看下面的例子(比如我们要在下面这段话中查找a这个单词) Erveryone has a right hand. 直接查找a关键字,那么可能会把hand和has这些单词中的a找出来 若查找^a$关键字,则只会把 a 找出来10/15/2018Struts实训-正大软件学院
  • 3. 句点符号 .句点符号是一个通配符 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。你可以使用一个通配符——句点符号“.”。这样,完整的正则表达式就是“t.n”,它匹配“tan”、“ten”、“tin”等等以t开头,以n结尾的三个字符的文本. 其中,句点符号“.”指的是匹配任意一个字符,包括空格、Tab字符甚至换行符 10/15/2018Struts实训-正大软件学院
  • 4. 方括号符号 []方括号符号:指定通配符范围 为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定有意义的字符。此时,只有方括号里面指定的字符才参与匹配。 比如:正则表达式“t[aeio]n”,只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符 10/15/2018Struts实训-正大软件学院
  • 5. 连字符 -连字符:表示一个范围 比如要查找的三位号码是618/628/638/648/658 可以表示成6[1-5]8 注:连字符结合方括号一起使用 [1-5]表示1到5的任何一位数字 注意:[a-z]表示什么呢? 10/15/2018Struts实训-正大软件学院
  • 6. “或”符号 |或符号“|” :成就多个匹配选择 使用“t(a|e|i|o|oo)n”正则表达式,除了匹配“tan”、“Ten”、“tin”和“ton” 之外,还可以匹配“toon”。 注: “|”操作符的基本意义就是“或”运算,这里必须使用圆括号“()”把要使用或运算的字符括起来 。 10/15/2018Struts实训-正大软件学院
  • 7. 表示匹配次数的符号引子 若要查找如下的qq号码:8/88/888/8888/88888(五个八)/888888(六个八)/8888888(七个八)…如此下去,那么该怎么写一个正则表达式来找呢?注意,只写一个. 我们可以用表示匹配次数的符号+(加号)来表示,答案就是8+ +号表示重复一次或一次以上10/15/2018Struts实训-正大软件学院
  • 8. 表示匹配次数的符号下表是表示重复次数的一些符号10/15/2018Struts实训-正大软件学院
  • 9. 小练习电话号码判断,判断一个电话号码是否是有效的号码,如023-68686688/0833-2121221之类的电话号码 分析规则:前三位或者四位是数字,中间一个”-”,后面八位或七位数字 正则表达式应该是: [0-9]{3,4}\-[0-9]{7,8} 注意:中间的减号”-”前面有个”\” 10/15/2018Struts实训-正大软件学院
  • 10. “否”符号 ^“^”表示不想要匹配的字符,通常与[]一起使用 比如[^xyz]表示匹配除x/y/z三个字母之外的其他字符 比如[^0-9] 表示匹配除了0-9之外的其他字符 例如:验证一个且首位字符不能是数字的字符串,其正则表达式可以这样写[^0-9].* 注^在最前面表示单词的开始,不要弄错位置10/15/2018Struts实训-正大软件学院
  • 11. 关于空格 \s在正则表达式中使用\s来表示一个空格或者tab键. 比如\s表示一个空格或一个tab键的效果 比如\s+表示一个或多个空格/tab键.10/15/2018Struts实训-正大软件学院
  • 12. 圆空号 ()作用(两个) 类似四则运算中提高优先级的作用 分组的作用,首先出现的括号会自动划分为第一组,可以用\1来引用. 比如:要查找这样的句子 又…又…又… 在正大学习struts又省时又省力又省钱. 正则表达式可以这样 [^又]+又[^又]+又[^又]+又[^又]+ 等价于 ([^又]+)又\1又\1又\1 10/15/2018Struts实训-正大软件学院
  • 13. 其他特殊符号(类似转义字符)下表列出了常用的一些特殊符号 10/15/2018Struts实训-正大软件学院
  • 14. 小练习二把小练习一中的正则表达式改一个形式 可以把[0-9]换成/d,两者是等价的10/15/2018Struts实训-正大软件学院
  • 15. 在java中使用正则表达式前言 在具备了一些正则表达式的基础之后,下面说说正则表达式在Java中是如何体现的,说的更明白一些也就是在Java中如何实现、如何编写代码。 10/15/2018Struts实训-正大软件学院
  • 16. 与正则表达式相关的两个类正则表达式是通过java.util.regex包中的Pattern和Matcher两个类来实现的 Pattern类通过Pattern的complie(正则表达式)方法生成一个特定匹配模式类的Pattern对象 Matcher对象是通过编译过的Pattern对象调用matcher(要匹配的字符串)方法产生的,在Matcher中可以得到你想要得到的匹配结果集10/15/2018Struts实训-正大软件学院
  • 17. 关键代码分析String textStr=“要验证的邮箱地址”; String mre =“\\w+@\\w+[.]\\w+ ”;//正则表达式 Pattern p=Pattern.compile(mre); //创建匹配模式类的对象 Matcher m = p.matcher(textStr); //生成匹配结果集对象 if (m. matches()) { //该方法判断是否匹配成功 System.out.println( "验证成功! "); } else { System.out.println( "验证失败! "); } 10/15/2018Struts实训-正大软件学院
  • 18. 关键代码第二种方式String textStr=“要验证的邮箱地址”; String mre =“\\w+@\\w+[.]\\w+ ”;//正则表达式 if (Pattern.matches(mre, textStr)) { //该方法判断是否匹配成功 System.out.println( "验证成功! "); } else { System.out.println( "验证失败! "); } 10/15/2018Struts实训-正大软件学院
  • 19. 两种方式的比较方式一 Pattern p=Pattern.compile(mre); //创建匹配模式类的对象 Matcher m = p.matcher(textStr); //生成匹配结果集对象 boolean b = m.matches();//判断是否匹配 方式二 boolean b = Pattern.matches(mre, textStr); 方式二代码简洁,在仅使用一次正则表达式时采用;多次使用时建议采用方式一,方式二效率不高.10/15/2018Struts实训-正大软件学院
  • 20. 例子例子 寻求帮助: 关于正则表达式和Pattern和Match类的使用,请参见jdk1.5帮助文档.10/15/2018Struts实训-正大软件学院
  • 21. 在验证中使用正则表达式方式一:在form的validate()方法中使用正则表达式[示例演示] 方式二:在validation验证框架中配置正则表达式[示例演示]10/15/2018Struts实训-正大软件学院
  • 22. 作业对考试题的验证进行改造,分别使用 方式1(validate()方法验证)和方式2(使用验证框架进行验证) 特别要求对身份证,电话号码的验证采用正则表达式来验证10/15/2018Struts实训-正大软件学院