已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章正则表达式,在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具,本章将介绍正则表达式的定义,如何编写正则表达式,以及如何在JavaScript中使用正则表达式。,4.1正则表达式的起源,正则表达式是一个描述一组字符串的模板,换句话说,正则表达式是记录文本规则的代码。借助于正则表达式,很多原本非常复杂的字符串处理问题可以很容易地得到解决。JavaScript语言的正则表达式就使用了Perl兼容的风格。,4.2构建正则表达式,一个最简单的正则表达式就是普通的字符串,例如“hello”,它可以匹配在文本的任何位置上出现的“hello”。这个最简单的正则表达式中只包含了普通字符,与普通字符相对的一些特殊字符,如“($|)?*+”等,我们称之为元字符。,4.3JavaScript中的正则表达式,应用正则表达式进行字符串处理的目的可以归结为三类:(1)验证(2)匹配(3)替换,4.3.1定义正则表达式,在JavaScript中有两种定义正则表达式的方法。第一种是使用Perl风格的表示方法,在文本的两端添加“/”符号。例如上节中匹配文本文件名的正则表达式,在JavaScript中可以这样定义:varre=/.*.js/;,第二种方法是新建一个RegExp对象,例如:varre=newRegExp(.*.js);在声明正则表达式时还可以附加标志,其中可能的标记包括:(1)g:全局查找模式;(2)i:不区分大小;(3)m:多行查找模式。,4.3.2String对象,String对象中有以下4个方法可以支持正则表达式:(1)match:使用正则表达式进行字符串匹配;(2)replace:使用正则表达式进行字符串替换;(3)search:在字符串中查找指定的模式;(4)split:将字符串按一定的模式进行分隔。关于这些函数的详细使用方法,请参考本书第5章的相关内容。,4.3.3RegExp和正则表达式对象,表4-1RegExp全局对象属性,正则表达式对象指的是RegExp类的对象实例,RegExp有两个原型方法:(1)test:测试字符串是否包含指定的模式;(2)exec:在字符串中查找指定的模式,并且以数组形式返回查找结果。,【例4-1】test方法使用示例【例4-2】exec方法使用示例,图4-1exec方法输出结果,4.4简单模式,4.4.1元字符,表4-2正则表达式元字符,元字符是正则表达式中的特殊字符,如果需要表示元字符本身,那么必须在字符之前加上“”字符进行转义。例如前面示例中使用的正则表达式“.*.js”就使用了“.”来表示字符“.”本身。,除了使用“”进行转义之外,也可以使用ASCII代码或者Unicode代码指定字符。使用ASCII代码表示字符时,必须指定一个两位的十六进制代码,并在前面加上“x”。例如,字符“d”的ASCII码为100,即十六进制的64,因此在正则表达式中可以使用“x64”来表示字符“d”。,另外,也可以使用八进制来指定字符的ASCII代码,方法是直接在“”之后跟上八进制数值。例如字符“d”的ASCII码为100,即八进制的144,因此可以使用“144”在正则表达式中表示字符“d”。,如果使用Unicode代码来表示字符,必须指定字符的4位十六进制形式,并在前面加上“u”表示Unicode。例如字符“d”用Unicode表示法应该写作“u0062”。这种表示方法在进行非英语语言(如中文)字符串匹配时非常有用。,4.4.3括号表达式,在中括号()之间放入一个或者多个单字符,可以创建一个待匹配的列表,这样的表达式就是括号表达式。括号表达式能表示的范围不仅仅是数字,其他普通字符、特殊字符都可以在括号表达式中使用。在括号表达式中可以使用多个范围。,4.4.4预定义类,表4-3预定义类,4.4.5限定符,限定符可以指定某个特定模式出现的次数,基本的限定符有3种形式:n、n,m和n,。对于几种常用的限定符,也可以使用前面提到的元字符来表示,它们是:(1)*:等价于0,;(2)?:等价于0,1;(3)+:等价于1,。,4.4.6贪婪模式与非贪婪模式,在正则表达式中定义了三种限定符模式:贪婪模式、非贪婪模式和支配模式。其中支配模式在主流浏览器中还不支持,这里仅讨论前两种。,4.5复杂模式,4.5.1选择和分组可以在正则表达式中使用“|”符号表示选择的关系。在正则表达式中圆括号()内部是一个分组,在进行匹配时,JavaScript会将匹配结果保存在RegExp对象的$1-99属性内。【例4-3】正则表达式的选择和分组,4.5.2非捕获性分组,我们可以RegExp对象的$1,$2等属性来获取正则表达式分组的结果,这在正则表达式的应用中称为反向引用。创建反向引用的分组,我们称之为捕获性分组。与之相反的概念则是非捕获性分组。,4.5.3前瞻,除了表示非捕获性分组的“?:”字符之外,还有两个与分组相关的元字符:“?=”和“?!”,分别称为前瞻和负向前瞻。,【例4-4】电话号码匹配(非前瞻方式)【例4-5】电话号码匹配(前瞻方式),4.5.4定位符,前面编写的所有正则表达式都是与具体的字符进行匹配,在这一节将要讨论的定位符则是和字符的边界进行匹配。正则表达式中将会考虑的边界包括两种类型:(1)字符串的开始或者结尾位置,分别用“”和“$”符号表示;(2)单词边界,即单词和空格之间的位置,用“b”表示。与单词边界相对的概念是非单词边界,它用“B”符号表示。,【例4-6】定位符使用示例【例4-7】寻找字符串中的第n个单词【例4-8】寻找字符串中的倒数第n个单词【例4-9】“b”定位符的使用示例【例4-10】寻找字符串中的第n个单词和倒数第n个单词(使用“b”定位符),小结,本章介绍了正则表达式的起源、如何创建正则表达式以及如何在JavaScript中使用正则表达式。利用正则表达式可以实现非常强大的字符串处理功能,同时正则表达式的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020-2025年一级造价师之工程造价案例分析(土建+安装)通关提分题库及完整答案
- 2025-2026学年冀教版(新教材)一年级上册第一单元达标试卷(附参考答案)
- 跖神经损害的护理
- 2026年注册土木工程师(水利水电)之专业基础知识考试题库200道附答案(满分必刷)
- 2026浙江衢州市龙游县新教师提前批招聘12人(浙江师范大学)历年真题汇编及答案解析(夺冠)
- 2025重庆市属事业单位第四季度遴选工作人员43人备考公基题库带答案解析
- 2026年质量员之土建质量基础知识考试题库及答案(新)
- 浙江国企招聘-2025浙江浙商典当有限责任公司人员招聘2人历年真题汇编带答案解析
- 2026陕西省面向中南大学招录选调生历年真题汇编附答案解析
- 2025河北廊坊开发区招聘社区工作者40人备考题库带答案解析
- 2025年航空飞行模拟设备采购与培训协议3篇
- 中央企业人工智能应用场景案例白皮书(2024年版)-中央企业人工智能协同创新平台
- 《柑橘类果园碳汇计量监测技术规程》
- 酒店保洁公司合同范例
- 《工作态度与心态》课件
- 小王子(中英文对照版)
- 重庆市南川区三校联盟2024-2025学年八年级上学期期中考试数学试题(A卷)(无答案)
- 2024年时事政治考试100题及参考答案
- 中国融通集团招聘笔试题库2024
- JT-T-1045-2016道路运输企业车辆技术管理规范
- 自动控制原理考试试卷及答案
评论
0/150
提交评论