JScript中正则表达式用法详解.doc_第1页
JScript中正则表达式用法详解.doc_第2页
JScript中正则表达式用法详解.doc_第3页
JScript中正则表达式用法详解.doc_第4页
JScript中正则表达式用法详解.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JScript中正则表达式用法详解首相讲讲JScript的正则表达式对象RegExp。 JScript中提供正则表达式操作的类名为RegExp,可以用两种方式实例化RegExp类型的对象。 方法一,构造函数实例化: var myRegex = new RegExp(w+, igm ); /w+为实际正则表达式,注意第一个为转义之用,igm分别表示忽略大小写,全局搜索,多行搜索,这个后面会解释 方法二,直接赋值法: var myRegex = /w+/igm; /效果与上一个语句一样,只是这里不需要用转移字符,原正则表达式是什么样子就是什么样子,igm就和前面例子的igm作用一样 具体用什么方式看大家喜好了,个人觉得第二种方式写的正则比较好读些,RegexBuddy帮助文档也是推荐第二种方式。 RegExp对象包含以下一些操作: exec(string str):执行正则表达式匹配,并返回匹配结果,根据MSDN给出的例子运行结果看,exec每次执行都是从上次直接的匹配结束位置开始,并且返回的值似乎是RerExp对象,而RegexBuddy给出的解释是返回一个数组,但是没有给出详细例子,我觉得还是根据试验结果为依据比较可靠。 compile(string regex, string flags):预编译正则表达式以使其运行更快,经过测试的确预先编译后效率有明显提升。regex参数为正则表达式,flags可以为以下3个值的组合: g 全局搜索,我的试验结果是不加g标志就只能匹配第一个符合条件的字符串 i 忽略大小写 m 多行搜索,似乎默认已经是多行搜索了 test(string str):如果str匹配正则表达式返回true,否则返回false,这个类似string对象的match方法 RegExp对象包含以下一些属性: index:字符串中第一个匹配表达式的位置,初始为-1 input:正则表达式的匹配目标,注意是只读的 lastIndex:下一个匹配表达式的位置,原话是(Returns the character position where the next match begins in a searched string.)也不知道有没有翻译错,这个属性我没有用到。 lastMatch:最后一个匹配表达式的字符串 lastParen:最后一个匹配的子匹配串,比如正则表达式里有多个以()分组的匹配项,lastParen表示最后一组所匹配的结果 leftContext:从目标字符串的开头到last match的起始位置的所有字符。 rightContext:从last match的结束位置到整个目标字符串的结束位置的所有字符。 $9:表示第n组匹配的结果,这个在正则表达式里有多个以()分组时有用$1 接下来讲讲,JScript中String对象与正则表达式有关的操作: match(string regex):接受一个正则表达式,并返回该字符串是否与这个表达式匹配。 replace(srting regex, string str):将与正则表达式匹配的子字符串替换为str,这个函数看似简单,不过还隐藏着更高级用法哦,请看以下例子。 例子1: var str1 = A:My name is Peter!nB:Hi Peter!;str1 = str1.replace(/Peter/g,Jack);alert(str1); 这个例子很简单就是把字符串替换了,这则表达式的威力当然不只于此,如果你用的熟练,还能用它完成很多以往需要大量代码完成的工作。比如在代码关键字前后加上由于高亮显示的HTML标签。从前面例子看来似乎replace只能把匹配的文本替换成新的文本啊,怎么利用它在关键字前后插入标签呢?返过来想象,如果在替换时能利用匹配结果,那么事情不就好办了,只要将关键字替换为:标签头 + 关键字 + 标签尾 不就行了。 可是要如何在replace中使用正则表达式匹配的结果呢? 这时候我们就需要用到“匹配变量”了,匹配变量用于表示正则匹配的结果,以下是匹配变量的说明: $ & - 表示全部匹配组匹配的结果,最后再啰嗦一次,匹配组就是正则表达式的()分组 $字符,所以需要转义$字符,因为匹配变量用掉了$ - 表示$ $9,表示第n组匹配的结果$1$n - 类似前面的 $nn - 很简单就是第nn组匹配的结果 $ - 就是前面提到过的leftContext,比如abcdefg被匹配出了d那么abc就是它的leftContext了 $ - 和上面符合很接近不要看错了!,这个就是rightContext了,举一反三,efg就是上面例子的rightContext了 那么现在我们要做到在关键字前后插入标签就很简单了: var str1 = A:My name is Peter!nB:Hi Peter!;str1 = str1.replace(/Peter/g, $&); alert(str1); 都0:39了。就写到这里吧。 正则工具软件下载(密码: regex):regex buddy 2.06.zip 我写的例子请看:JScript做语法加亮显示(代码精简) 一下是MSDN载抄的一些例子:function matchDemo() var s; var re = new RegExp(d(b+)(d),ig); var str = cdbBdbsbdbdz; var arr = re.exec(str);$1 + n;$1 contains: + RegExp. s = $2 s += $2 + n;contains: + RegExp.$3;$3 contains: + RegExp. s += return(s);function RegExpTest() var ver = Number(ScriptEngineMajorVersion() + . + ScriptEngineMinorVersion() if (ver = 5.5) var src = The rain in Spain falls mainly in the plain.; var re = /w+/g; var arr; while (arr = re.exec(src) != null) print(arr.index + - + arr.lastIndex + t + arr); else alert(You need a newer version of JScript for this to work); function matchDemo() var s; /Declare variable. var re = new RegExp(d(b+)(d),ig); /Regular expression pattern. var str = cdbBdbsbdbdz; /String to be searched. var arr = re.exec(str); /Perform the search.$1 + n;$1 returns: + RegExp. s = $2 returns: s += $2 + n;+ RegExp.$3 + n;$3 returns: + RegExp. s += s += input returns : + RegExp.input + n; s += lastMatch returns: + RegExp.lastMatch + n; s += leftContext returns: + RegExp.leftContext + n; s += rightContext returns

温馨提示

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

评论

0/150

提交评论