




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二级造价工程师土建专业考试高频考点梳理
- 2025年IT科技项目主管竞聘实战指南及模拟题答案详解
- 2025年企业青年团员思想引领模拟题及参考答案详解
- 2025年非临床安全性评价服务项目合作计划书
- 2025年兽用诊断制品项目建议书
- 2025年非接触式物位仪表合作协议书
- 2025年新闻采辑项目合作计划书
- 抗衰老医美提升沙龙课件
- 江苏省南京市励志高级中学2024-2025学年高二下学期第二次调研考试地理试题(含答案)
- 河南省新未来2025-2026学年高三上学期9月联合测评生物试题(含答案)
- 血液灌流操作流程课件
- 电力系统分析(郝亮亮)
- 小红书口碑对旅游者目的地决策的影响研究
- 查缉酒驾实战培训课件
- 铁路客运规章全套教学课件
- 计算机组成原理-鲲鹏
- 2023年各地中考语文卷名著《昆虫记》阅读题汇集练附答案解析
- 新生儿感染性休克的个案护理课件
- 3d玻璃的热弯工艺
- 游戏开发行业保密知识培训之保护游戏设计数据的关键要点
- 氢能源相关项目建议书
评论
0/150
提交评论