世纪高等学校计算机规划教材第4章JavaScript正则表达式

上传人:san****019 文档编号:21614054 上传时间:2021-05-05 格式:PPT 页数:31 大小:775.51KB
返回 下载 相关 举报
世纪高等学校计算机规划教材第4章JavaScript正则表达式_第1页
第1页 / 共31页
世纪高等学校计算机规划教材第4章JavaScript正则表达式_第2页
第2页 / 共31页
世纪高等学校计算机规划教材第4章JavaScript正则表达式_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第 4章正 则 表 达 式 正 则 表 达 式 的 起 源4.1 构 建 正 则 表 达 式4.2 JavaScript中 的 正 则 表 达 式4.3 简 单 模 式4.4 复 杂 模 式4.5 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。 正则表达式就是用于描述这些规则的工具,本章将介绍正则表达式的定义,如何编写正则表达式,以及如何在JavaScript中使用正则表达式。 4.1 正 则 表 达 式 的 起 源 正则表达式是一个描述一组字符串的模板,换句话说,正则表达式是记录文本规则的代码。 借助于正则表达式,很多原本非常复杂的字符串处理问题可以很容易地得到解决。 JavaScript语言的正则表达式就使用了Perl兼容的风格。 4.2 构 建 正 则 表 达 式 一个最简单的正则表达式就是普通的字符串,例如“hello”,它可以匹配在文本的任何位置上出现的“hello”。 这个最简单的正则表达式中只包含了普通字符,与普通字符相对的一些特殊字符,如“ ( $ | ) ? * +”等,我们称之为元字符。 4.3 JavaScript中 的 正 则 表 达 式 应用正则表达式进行字符串处理的目的可以归结为三类: ( 1) 验 证 ( 2) 匹 配 ( 3) 替 换 4.3.1 定义正则表达式 在JavaScript中有两种定义正则表达式的方法。 第一种是使用Perl风格的表示方法,在文本的两端添加“/”符号。 例如上节中匹配文本文件名的正则表达式,在JavaScript中可以这样定义:var re = /.*.js/; 第二种方法是新建一个RegExp对象,例如:var re = new RegExp(.*.js); 在声明正则表达式时还可以附加标志,其中可能的标记包括: ( 1) g: 全 局 查 找 模 式 ; ( 2) i: 不 区 分 大 小 ; ( 3) m: 多 行 查 找 模 式 。 4.3.2 String对象 String对象中有以下4个方法可以支持正则表达式: ( 1) match: 使 用 正 则 表 达 式 进 行 字 符 串 匹 配 ; ( 2) replace: 使 用 正 则 表 达 式 进 行 字 符 串 替 换 ; ( 3) search: 在 字 符 串 中 查 找 指 定 的 模 式 ; ( 4) split: 将 字 符 串 按 一 定 的 模 式 进 行 分 隔 。 关于这些函数的详细使用方法,请参考本书第5章的相关内容。 4.3.3 RegExp和正则表达式对象表4-1 RegExp全局对象属性属 性含 义初 始 值input输入字符串,缩写为“$_”空字符串index匹配结果第1个字符所在位置1lastIndex匹配结果最后一个字符之后的位置1lastMatch上次匹配结果,缩写为“$&”空字符串lastParen上次匹配的子模式,缩写为“$+”空字符串leftContext匹配结果左侧部分,缩写为“$”空字符串rightContext匹配结果右侧部分,缩写为“$”空字符串 $1-$9第19个子模式匹配结果空字符串$01-$99第199个子模式匹配结果空字符串 正则表达式对象指的是RegExp类的对象实例,RegExp有两个原型方法: ( 1) test: 测 试 字 符 串 是 否 包 含 指 定 的 模式 ; ( 2) exec: 在 字 符 串 中 查 找 指 定 的 模 式 ,并 且 以 数 组 形 式 返 回 查 找 结 果 。 【例4-1】 test方法使用示例【例4-2】 exec方法使用示例 图4-1 exec方法输出结果 4.4 简 单 模 式 4.4.1 元字符表4-2正则表达式元字符字 符含 义$匹配输入字符串的结尾位置,如果正则表达式为多行模式,那么$也可以匹配回车或换行符n或r( )标记一个子模式的开始和结束位置*匹配前面的子模式零次或多次+匹配前面的子模式一次或多次 .匹配除换行符n之外的任何单字符标记一个中括号表达式的开始 ?匹配前面的子模式零次或一次;指明一个非贪婪限定符将下一个字符标记为特殊字符、原义字符、后向引用或者八进制转义符匹配输入字符串的开始位置;在方括号表达式中使用时,它表示不接受该字符集合标记限定符表达式的开始|指明两项之间的一个选择 元字符是正则表达式中的特殊字符,如果需要表示元字符本身,那么必须在字符之前加上“”字符进行转义。 例如前面示例中使用的正则表达式“.*.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预定义类预定义类等价表达式匹 配. nr任意字符,回车符和换行符除外d 0-9阿拉伯数字09D 0-9非数字字符s tnx0Bfr空白字符,包括空格、制表符、回车符、垂直制表符、换页符和换行符S tnx0Bfr非空白字符 w a-zA-Z_0-9单词字符,包括大小写英文字母、数字和下划线W a-zA-Z_0-9非单词字符 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中使用正则表达式。 利用正则表达式可以实现非常强大的字符串处理功能,同时正则表达式的使用也非常灵活。 使用正则表达式时需要注意的问题是:如果你使用正则表达式比较复杂,那么在编写代码的同时最好提供足够的注释,说明匹配字符串的特征。 另外可以使用正则表达式的测试工具(如The Regulator)来辅助编写正则表达式,这会大大提高编程效率和准确率。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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