正则表达式文档

上传人:jin****ng 文档编号:172954950 上传时间:2022-12-08 格式:DOCX 页数:6 大小:22.76KB
收藏 版权申诉 举报 下载
正则表达式文档_第1页
第1页 / 共6页
正则表达式文档_第2页
第2页 / 共6页
正则表达式文档_第3页
第3页 / 共6页
资源描述:

《正则表达式文档》由会员分享,可在线阅读,更多相关《正则表达式文档(6页珍藏版)》请在装配图网上搜索。

1、正则表达式是一个描述字符模式的对象。JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用JavaScript正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以JavaScript可能会包含如下 的代码:1 var patter n = /s$/;这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母s结尾的字符串都匹配

2、.用RegExp()也可以定义一个等价的正则表达式,代码如下:1 var patter n = new RegExp(s$);无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象都是比较容易的. 较为困难的任务是用正则表达式语法来描述字符的模式.JavaScript 采用的是 Perl 语言正则表达式语法的一个相当完整的子集. 正则表达式的模式规范是由一系列字符构成的 .大多数字符(包括所有字母数字字符)描述的都是 按照字面意思进行匹配的字符.这样说来,正则表达式/java/就和所有包含子串java的字符 串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配

3、的 ,但它们都具有特殊的意 义.正则表达式 /s$/ 包含两个字符.第一个特殊字符 s 是按照字面意思与自身相匹配.第二个 字符 $ 是一个特殊字符,它所匹配的是字符串的结尾.所以正则表达式 /s$/ 匹配的就是以字 母 s 结尾 的字符串.下面详细讲解.我们已经发现了 ,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配 的.JavaScript的正则表达式还通过以反斜杠()开头的转义序列支持某些非字母字符.例如,序 列 n , 在字符串中匹配的是一个直接量换行符.在正则表达式中,许多标点符号都有特殊的含 义.下面是这些字符和它们的含义:正则表达式的直接量字符字符匹配字母数字字符

4、含义f换页符 n换行符 r回车 t制表符 v垂直制表符 /一个 / 直接量 一个 直接量 .一个 . 直接量 *一个 * 直接量 +一个 + 直接量 ?一个 ? 直接量 |一个 ( 直接量 )一个 ) 直接量 一个 直接量 一个 直接量 一个 直接量 一个 直接量 XXX Xnn cXt, cJ 等价于 n由十进制数XXX指定的ASCII码字符 由十六进制数 nn 指定的 ASCII 码字符 控制字符X.例如,cl等价于如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 .2.字符类将单独的直接符放进中括号内就可以组合成字符类 .一个字符类和它所包含的任何一个字符都 匹配,所以正则

5、表达式/ abc /和字母a , b , c中的任何一个都匹配.另外还可以定义 否定字符类,这些类匹配的是除那些包含在中括号之内的字符外的所有字符 .定义否定字符尖时, 要将一个人符号作为从左中括号算起的第一个字符.正则表达式的集合是/ a-zA-zO-9 / . 由于某些字符类非常常用,所以 JavaScript 的正则表达式语法包含一些特殊字符和转义序列来 表示这些常用的类.例如,s匹配的是空格符,制表符和其它空白符,s匹配的则是空白符之外的 任何字符.正则表达式的字符类字符匹配.位于括号之内的任意字符人不在括号之中的任意字符除了换行符之外的任意字符,等价于Anw任何单字字符,等价于a-z

6、A-ZO-9W任何非单字字符,等价于a-zA-zO-9s任何空白符,等价于 t n r f vS任何非空白符,等价于人t n r f vd任何数字,等价于0-9D除了数字之外的任何字符,等价于人0-9b一个退格直接量(特例)3.复制用以上的正则表式的语法,可以把两位数描述成 / d d /把, 四位数描述成 / d d d d /.但我们还没有一种方法可以用来描述具有任意多数位的数字或者是一个字符串 .这个串 由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了 该表达式中每个元素要重复出现的次数 .指定复制的字符总是出现在它们所作用的模式后面 .由 于某种复制

7、类型相当常用.所以有一些特殊的字符专门用于表示它们.例如:+号匹配的就是复制前一模式一次或多次的模式.下面的表列出了复制语法.先看一个例子:/d2, 4/匹配 2到4间的数字./w3 d?/匹配三个单字字符和一个任意的数字./s+javas+/匹配字符串java,并且该串前后可以有一个或多个空格 ./人* /匹配零个或多个非引号字符.正则表达式的复制字符字符含义n, mn, n?价于 0, 1+*匹配前一项至少 n 次 , 但是不能超过 m 次 匹配前一项 n 次,或者多次 匹配前一项恰好 n 次匹配前一项0次或1次,也就是说前一项是可选的. 等 匹配前一项 1 次或多次,等价于1,匹配前一项

8、 0 次或多次.等价于0,4.选择,分组和引用 正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字 符.字符| 用于分隔供选择的字符.例如:/ab|cd|ef/匹配的是字符串ab,或者是字符串cd,又或者ef. /d3|a-z4/匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作 用.它的主要作用是把单独的项目分组成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如: /java(script) ?/匹配的是字符串java,其后既可以有script,也可以没有./(ab|cd) + |ef) /匹配的既可以是字符串ef

9、,也可以是字符串ab或者cd 的一次或多次重复.在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配 的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字 , 那么我们可以使用模式 / a-z + d+/.但是由于假定我们真正关心的是每个匹配 尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ a-z + (d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的. 代括号的子表达式的另一个用途是,允许我们在同一正则表达式的后面引用前面的子 表达式.

10、这是通过在字符串 后加一位或多位数字来实现的.数字指的是代括号的 子表达式在正则表达式中的位置.例如: 1 引用的是第一个代括号的子表达式. 3 引用的是第三个代括号的子表达式.注意,由于子表达式可以嵌套在其它子表达式中, 所以它的位置是被计数的左括号的位置.例如:在下面的正则表达式被指定为 2:/(Jjava(Sscript) sis s (funw*) /对正则表达式中前一子表达式的引用所指定的并不是那个子表达式的模式,而是与那个模式相匹配的文本.这样,引用就不只是帮助你输入正则表达式的重复部分的快捷方式了,它还实施了一条规约,那就是一个字符串各个分离的部分包含的是完全相同的字符.例如:下

11、面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号):/ */如果要求开始和结束的引号匹配,我们可以使用如下的引用:/()人* 1/1 匹配的是第一个代括号的子表达式所匹配的模式.在这个例子中,它实施了一种规约,那就是开始的引号必须和结束的引号相匹配.注意,如果反斜杠后跟随的数字比代括号的子表达式数多,那么它就会被解析为一个十进制的转义序列 ,而不是一个引用.你可以坚持使用完整的三个字符来表示转义序列,这们就可以避免混淆了.例如,使用 044,而不是44.下面是正则表达式的选择、分组和引用字符:字符 含义| 选择.匹配的

12、要么是该符号左边的子表达式,要么它右边的子表达式(.)分组.将几个项目分为一个单元.这个单元可由*、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引 用使用n和第 n 个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数5.指定匹配的位置 我们已经看到了,一个正则表达式中的许多元素才能够匹配字符串的一个字符 .例如: s匹配的只是一个空白符.还有一些正则表达式的元素匹配的是字符之间宽度为0的空间,而不是实际的字符例如:b匹配的是一个词语的边界,也就是处于一个/w 字字符和一个w非字字符之间的边界.像b这样的字符并不指定任何一个匹配了的

13、 字符串中的字符,它们指定的是匹配所发生的合法位置 .有时我们称这些元素为正则 表达式的锚.因为它们将模式定位在检索字符串中的一个特定位置.最常用的锚元素是人,它使模式依赖于字符串的开头,而锚元素$则使模式定位在字符串的末尾 例如:要匹配词javascript,我们可以使用正则表达式/人javascript $/.如果 我们想检索java 这个词自身 (不像在 javascript 中那样作为前缀),那么我们可以使 用模式 /s java s /, 它要求在词语 java 之前和之后都有空格. 但是这样作有两个 问题.第一: 如果java 出现在一个字符的开头或者是结尾.该模式就不会与之匹配,

14、除 非在开头和结尾处有一个空格. 第二:当这个模式找到一个与之匹配的字符时,它返回的匹配的字符串前端和后端都有空格, 这并不是我们想要的.因此,我们使用词语的边界 b 来代替真正的空格符 s 进行匹配. 结果表达式是 /b java b/. 下面是正则表达式的锚字符:字符含义匹配的是字符的开头,在多行检索中,匹配的是一行的开头$匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾b匹配的是一个词语的边界.简而言之就是位于字符w和w之间的位置(注意:b 匹配的是退格符)B匹配的是非词语的边界的字符6. 属性有关正则表达式的语法还有最后一个元素 ,那就是正则表达式的属性 ,它说明的是高 级模式匹配

15、的规则.和其它正则表达式语法不同,属性是在/ 符号之外说明的.即它们不出现在两个斜杠之间,而是位于第二个斜杠之后.javascript 1.2支持两个属性.属性 i说明模式匹配应该是大小写不敏感的.属性 g 说明模式匹配应该是全局的.也 就是说,应该找出被检索的字符串中所有的匹配 .这两种属性联合起来就可以执行一 个全局的,大小写不敏感的匹配.例如: 要执行一个大小不敏感的检索以找到词语 java (或者是 java 、JAVA 等)的第一个具体值,我们可以使用大小不敏感的正则表达式 /b javab/i .如果要在 一个字符串中找到 java 所有的具体值 ,我们还可以添加属性 g, 即 /

16、b java b/gi .以下是正则表达式的属性:字符 含义i执行大小写不敏感的匹配g执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停 止了除属性 g 和 i 之外,正则表达式就没有其它像属性一样的特性了 .如果将构造函数 RegExp 的静态属性multiline 设置为 true ,那么模式匹配将以多行的模式进行.在这种模式下,锚字符人和$匹配的不只是检索字符串的开头和结尾,还匹配检索字符 串内部的一行的开头和结尾.例如: 模式/Java$/匹配的是Java,但是并不匹配Javanis fun .如果我们设置了 multiline 属性,那么后者也将被匹配:RegExp.multiline = true;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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