javascript第十六讲:正则表达式.ppt

上传人:s****8 文档编号:69352733 上传时间:2023-01-02 格式:PPT 页数:17 大小:243.50KB
返回 下载 相关 举报
javascript第十六讲:正则表达式.ppt_第1页
第1页 / 共17页
javascript第十六讲:正则表达式.ppt_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《javascript第十六讲:正则表达式.ppt》由会员分享,可在线阅读,更多相关《javascript第十六讲:正则表达式.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、联系方式:北京源智天下科技有限公司第十六讲:正则表达式第十六讲:正则表达式 讲师:杨兴讲师:杨兴e-mail:http:/ 简单模式简单模式 复杂模式复杂模式 常用模式常用模式 1-3北京源智天下科技有限公司联系方式:正则表达式基础为什么使用正则表达式 在这之前曾有过字符验证例子,其中验证字符的代码非常繁琐冗长。有了正则表达式,验证程序的代码变得简洁而更强大,代码运行的速度更快。为了判断某个字符串是否符合某种格式,使用正规表达的最为合适。通常,人们在表单数据发送到服务器之前,都需要进行数据合法性验证。例如,客户所填写的电子邮件地址格式是否正确等。使用正则表达式可以使程序代码简单高效。1-4北京

2、源智天下科技有限公司联系方式:正则表达式基础使用RegExp对象 RegExp是JavaScript提供的一个对象,用来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp实例。JavaScript使用RegExp对象封装与正则表达式相关的功能和操作,每一个该对象的实例对应着一条正则表达式。和其他对象一样,在使用之前必须取得其引用或新建一个对象实例。创建一个RegExp实例语法如下:var regObj=new RegExp(“pattern”,”flags”);参数说明:参数说明:pattern:必选项,正则表达式的字符串。:必选项,正则表达式的字符串。flags:可选项

3、,是一些标志组合。:可选项,是一些标志组合。1-5北京源智天下科技有限公司联系方式:正则表达式基础在标志组合中,“g”表示全局标志。设定时将搜索整个字符串,以找匹配的内容,每一次新的探索都从RegExp对象的lastIndex标记的字符起,否则只搜索到第一个匹配的内容。“i”表示忽略大小写标志,若设置该项,则在搜索匹配项时忽略大小写,否则将区别大小写。以上所述是创建正则表达式对象的方式之一,另一种创建方式如下:var regObj=/pattern/flags;参数的意义和第一种方式一样,但这种方式不能用引号将pattern和flags括起来。正则表达式的使用非常简单,只要用一个test方法就

4、行了,如下所示。regObj.test(string);1-6北京源智天下科技有限公司联系方式:正则表达式基础regObj表示正则表达式对象,是一个RegExp对象实例。string为源字符串,即将在其中进行匹配操作的字符串。test方法返回一个布尔值,表明是否已经在源串中找到了正则表达式所定义的模式。下面举一个例子来说明。0102var reg=/.o./g;/寻找字符o前后接任意字符组成的有三个字符的字符串03var str=How are you?/源串04var result=new Array();/用于接收结果05while(reg.exec(str)!=null)/执行匹配操作,

5、如果找到匹配则继续找下一项0607result.push(RegExp.lastMatch);/添加结果0809alert(result);/输出找到的匹配项101-7北京源智天下科技有限公司联系方式:简单模式 元字符元字符是正则表达式最为简单的情况。它指的是与字符序列相匹配,例如范例16-1中的正则表达式filter。其简单的查找语句said中是否存在“一枪爆头”这个语句,这个语句中没有其他有特别含义的字符。0102var filter=/一枪爆头/g;/将受限制的词句组成正则表达式03var said=他被人一枪爆头了;/将接受检查的语句04if(filter.test(said)/如果被

6、检查语句中存在受限词句0506alert(该语句中有限制级词语,系统已经过滤!);/显示警告0708else/否则0910alert(said);/输出原话11121-8北京源智天下科技有限公司联系方式:简单模式量词 量词就是指定某个特定模式出现的次数。分为简单量词、贪婪量词、惰性量词和支配量词几种。目前IE浏览器并没有实现这些特性,下面简单的介绍这几种量词。贪婪量词,它是首先匹配整个字符串,如果不匹配,则去掉最后一个字符,然后再比较。如果仍然不匹配,则继续去掉最后一个字符再比较,如此一直下去,直到找到匹配或者字符串的字符被取完为止。惰性量词是先看字符串中的第一个字符是不是匹配。如果不匹配,就

7、读入下一个字符,将这两个字符连接成一个字符串。如果还是不匹配,则继续从字符串添加字符直到发现匹配或找完整个字符串为止。1-9北京源智天下科技有限公司联系方式:简单模式支配量词,它只尝试整个字符串的匹配,如果不能匹配,则不再尝试,也就说它只比较一次。具体的方法见如下的例子。05062223242526 用户名合法性检测程序272829规则:数字或英文字符串+数字3031 32 33341-11北京源智天下科技有限公司联系方式:复杂模式 分组 前面用简单模式可以找整个表达式的结果,但是如果要找的是表达式内的子表达,或者找的是目标字符串中重复出现子串,则仅仅依靠前面的简单模式的知识是绝对无法实现的。

8、为了解决上面的问题,正则表达式引入分组的概念。它的语法是“(pattern)”,也就是用括号括起一些字符、字符类或量词,它是一个组合项或子匹配,可统一操作。下面是一个简单的分组的例子。1-12北京源智天下科技有限公司联系方式:复杂模式0102var showStr=;/定义一个变量,并赋空值03var str=this word is OKOKOKOKokokokok!;/给变量赋初值04var searchStr=/(OK)2/gi;/分组的正则表达式05var result=str.match(searchStr);/查找匹配06for(var i=0;i result.length;i+

9、)/循环访问arrdata对象0708showStr+=resulti+n;/显示信息0910alert(一共有+result.length+组匹配n+showStr);/显示最后匹配的结果11候选 候选就是用“|”来表示的模式或关系,它表示的是在匹配时可以匹配“|”的左边或右边。这个“|”相当于“或”。这个功能一般用在检验某个指定的字符串是否存在。下面是一个简单的候选的例子。1-13北京源智天下科技有限公司联系方式:复杂模式0102var str1=I like red and black;/给字符串赋初值03var str2=she likes black;/给字符串赋初值04var re

10、sult=/(red|black)/;/候选正则表达式05reStr=result.test(str1);/用test方法检查字符串是否存在06alert(result.test(str2);/返回的值为bool型,即true或flase,这里返回的是true07alert(reStr)/返回true08非捕获性分组 非捕获性分组是指将目标字符串分组合成一个可以统一操作的组合项,只是不会把它作为子匹配来捕获,匹配的内容不编号也不存储在缓冲区,这个功能适合用在对非捕获性分组方法在必须进行组合、但又不想对组合的部分进行缓存的情况下有用。下面是一个简单的非捕获性分组的例子。1-14北京源智天下科技有

11、限公司联系方式:复杂模式0102function locate()0304var str=we want to search for the words:discount and discover;05var regex=/dis?:count|cover)/g/查找字符的正则表达式06var array=regex.exec(str);/第一次匹配07var msg=字符所在的位置是:t08if(array)0910msg+=array.index+t;/取得所查找的字符的位置1112array=regex.exec(str);/第二次匹配13if(array)1415msg+=array.

12、index+t;/取得所查找的字符的位置1617alert(msg);/显示信息1819locate();201-15北京源智天下科技有限公司联系方式:复杂模式前瞻 前瞻是指对所要匹配的字符作一些限定条件。比如在检查用户输入的是否为电子邮箱时,其中有一个特殊的符号,这就算是一个限定。前瞻又分正向前瞻和负向前瞻正向前瞻是指在目标字符串的对应位置处要有指定的某一特殊的值。不过这个值不作为匹配结果处理,当然也不会存储在缓冲区内。负向前瞻则和正向相反,是在指定的位置不能有指定的值,它的处理结果也不作为匹配结果处理,也不会存储在缓冲区内。1-16北京源智天下科技有限公司联系方式:常用模式验证电子邮件 正

13、确格式的电子邮件地址如,它必须符合以下几个条件。电子邮件地址中同时含有“”和“.”字符;字符“”后必须有字符“.”,且中间至少间隔一个字符;字符“”不为第一个字符,“.”不为最后一个字符。所有的电子邮件都是这样的。根据上述条件,可构造验证电子邮件地址的正则表达式如下所示:/(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-)+/下面是具体的实现过程。1-17北京源智天下科技有限公司联系方式:复杂模式02 04function check(obj)0506var emailUrl=obj.email.value07var regex=/(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-)+/;/构造正则表达式进行检验08if(!regex.exec(emailUrl)/取得用户的输入0910alert(您输入的格式有误,可能您好忘记了符号或是点号!请重新输入);11obj.m_email.focus()/取得焦点1213else1415alert(输入正确!);/通过验证16return true;/提交表单1718 20 2324验证电子邮件地址合法性25 26272829

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁