您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 《正则表达式基础》PPT课件
1五.正则表达式基础2目标为什么要使用正则表达式?正则表达式的语法基础。正则表达式的应用。3先看看以下应用在B/S程序中,经常会出现以下应用:1.校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串.2.校验密码:只能输入6-20个字母、数字、下划线.3.校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”.4.校验合法IP地址。5.检验有效的电子邮件地址。相关的应用实在太多。4试试看scripttype=text/javascriptvarpattern=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;varstr=prompt(“请输入你的邮件地址);if(pattern.test(str)){alert(合法的电子邮件地址!);}else{alert(不合法的电子邮件地址!);}/script5正则表达式概述正则表达式(regularexpression).描述了一种字符串匹配的模式,可以用来检查一个串是否含有某个子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。一个正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。6RegExp语法语法1re=/pattern/[flags]或者/expression/或者/^expression$/语法2re=newRegExp(pattern,[flags])参数re必选项。将要赋值为正则表达式模式的变量名。Pattern必选项。要使用的正则表达式模式。如果使用语法1,用/字符分隔模式。如果用语法2,用引号将模式引起来。flags可选项。如果使用语法2要用引号将flag引起来。标志可以组合使用,可用的有:•g(全文查找出现的所有pattern)•i(忽略大小写)•m(多行查找)7RegExp主要方法rgexp.test(str)返回一个Boolean值,它指出在被查找的字符串中是否存在模式。stringObj.match(rgExp)使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。stringObj.replace(rgExp,replaceText)返回根据正则表达式进行文字替换后的字符串的复制。8元字符-数量词“+”连续出现一次或多次。例:qhit+可能为qhitt,也可能为qhitttt;“*”出现零次或连续多次。例:qhit*可能为qhit,也可能为qhitttt;“?”连续出现零次或一次。例:qhit?可能为qhit,也可能为qhitt;{n}N次例:qhit{3},为qhittt{n,m}最少N次,最多M次例:qhit{2,4},t最少可以出现2次,最多可能为4次。{n,}最少N次,最多不限例:qhit{2,},t最少可以出现2次,最多无限次。9元字符-预定义字符类预定义字符类\s:用于匹配单个空格符,包括tab键和换行符;\S:用于匹配除单个空格符之外的所有字符;\d:用于匹配从0到9的数字;\w:用于匹配字母,数字或下划线字符;\W:用于匹配所有与\w不匹配的字符;.:用于匹配除换行符之外的所有字符。注:我们可以把\s和\S以及\w和\W看作互为逆运算.10元字符-边界匹配器^匹配一个输入或一行的开头/^a/匹配anA,而不匹配Ana“$/匹配一个输入或一行的结尾,/a$/匹配Ana,而不匹配anA“\b匹配一个单词的边界/\btom/只能是以tom开头的单词/man\b/只能是以man结尾的单词\B匹配一个单词的非边界\d匹配一个数字字符,等价于[0-9]\D匹配一个非数字字符,等价于[^0-9]\n匹配一个换行符\r匹配一个回车符11元字符-其他[]:匹配一个字符,可以使用-表示范围[a-z],[abc],[^ab],[0-9]/[A-Z]/从A到Z范围内任何一个大写字母相匹配。/[a-z]/从a到z范围内任何一个小写字母相匹配。/[0-9]/从0到9范围内任何一个数字相匹配。/([a-z][A-Z][0-9])+/上述正则表达式将会与任何由字母和数字组成的字符串,如“aB0”等相匹配。():和|配合使用,用于匹配一个字符串注:在正则表达式中使用“()”把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中在多个不同的模式中任选一个进行匹配的话,可以使用管道符“|”。例如:/to|too|2/,则在to,too,2中任选一个值.12普通字符普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。最简单的正则表达式是一个单独的普通字符,可以匹配所搜索字符串中的该字符本身。例如,单字符模式'A'可以匹配所搜索字符串中任何位置出现的字母'A'。这里有一些单字符正则表达式模式的示例:/a//7//M/13Flags可选项的使用语法1re=/pattern/[flags]语法2re=newRegExp(pattern,[flags])Flags的取值可以为:g(全文查找出现的所有pattern)i(忽略大小写)m(多行查找)14查找vars=TheraininSpainfallsmainlyintheplain;//创建表达式,包含ain的所有字符匹配.varreg=/ain/ig;vararr=s.match(reg);for(vari=0;iarr.length;i++){alert(arr[i]);}注:match方法使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回15查找并定位vars=TheraininSpainfallsmainlyintheplain;varreg=/falls/;alert(s.search(reg));注:search方法指明是否存在相应的匹配。如果找到一个匹配,search方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回-1.16替换vars=TheraininSpainfallsmainlyintheplain;varreg=/ain/ig;vararr=s.replace(reg,CHINA);alert(arr);17常见验证正则模式18示例-日期格式的验证SCRIPTLANGUAGE=JavaScriptstr=1988-10-02;if(str.match(/^((19|20)\d{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9]|30|31)$/)==null){alert('一个非法的日期值!');}/SCRIPTSCRIPTLANGUAGE=JavaScriptstr=1988-10-32;reg=newRegExp(/^((19|20)\d{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9]|30|31)$/);if(reg.test(str)==false){alert('一个非法的日期值!');}/SCRIPT1219示例-身份证格式验证SCRIPTLANGUAGE=JavaScriptstr=43010319801004001X;reg=newRegExp(/^\d{15}(\d{2}[A-Za-z0-9])?$/);if(reg.test(str)==false){alert('身份证格式无效!');}/SCRIPT20示例-移动手机号的校验SCRIPTLANGUAGE=JavaScript1.2str=15973378100;re=/^((13[0-9])|(15[89]))\d{8}$/;if(str.match(re)==null){alert(请输入正确的移动手机号码!);}document.write(你太有才了!);/SCRIPT21JDK中对正则表达式的支持在JDK中,有对正则表达式的支持包:Java.util.regex包:Pattern类•正则表达式的编译表示形式。•字符串的正则表达式必须首先被编译为此类的实例.•方法1:compile(正则表达式字符串);•方法2:matcher(给定字符串);并返回Matcher对象.Matcher类•通过解释Pattern对字符序列执行匹配操作的引擎。•方法:matches();尝试将整个区域与模式匹配,如果成功,返回true,反之为false;22示例Stringstring=^(\\w){5,20}$;Patternpattern=Pattern.compile(string);Stringstr=newString(afasfaf);Matchermatcher=pattern.matcher(str);System.out.println(matcher.matches());23总结正则表达式的语法.正则表达式的应用.
本文标题:《正则表达式基础》PPT课件
链接地址:https://www.777doc.com/doc-1895896 .html