`
demojava
  • 浏览: 540713 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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的结束位置到整个目标字符串的结束位置的所有字符。 
    $1…$9:表示第n组匹配的结果,这个在正则表达式里有多个以()分组时有用

    接下来讲讲,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中使用正则表达式匹配的结果呢?

    这时候我们就需要用到“匹配变量”了,匹配变量用于表示正则匹配的结果,以下是匹配变量的说明:
    $& -- 表示全部匹配组匹配的结果,最后再啰嗦一次,匹配组就是正则表达式的()分组
    $$ -- 表示$字符,因为匹配变量用掉了$字符,所以需要转义
    $n -- 类似前面的$1…$9,表示第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, "<b>$&</b>");
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);
   s = "$1 contains: " + RegExp.$1 + "\n";
   s += "$2 contains: " + RegExp.$2 + "\n";
   s += "$3 contains: " + RegExp.$3;
   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.
   s = "$1 returns: " + RegExp.$1 + "\n";
   s += "$2 returns: " + RegExp.$2 + "\n";
   s += "$3 returns: " + RegExp.$3 + "\n";
   s += "input returns : " + RegExp.input + "\n";
   s += "lastMatch returns: " + RegExp.lastMatch + "\n";
   s += "leftContext returns: " + RegExp.leftContext + "\n";
   s += "rightContext returns: " + RegExp.rightContext + "\n";
   s += "lastParen returns: " + RegExp.lastParen + "\n";
   return(s);                            //Return results.
}
document.write(matchDemo());

 

分享到:
评论

相关推荐

    jscript中正则表达式用法详解

    javascript中正则表达式用法详解

    Java中正则表达式使用方法详解

    本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。 一、正则表达式基础知识 我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则...

    jscript-正则表达式

    jscript-正则表达式,正则表达式的描述

    JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用

    JAVA中正则表达式小总结(整理)

    ]js正则表达式基本语法(精粹): //www.jb51.net/article/72044.htm  ... 在JDK1.3及之前的JDK版本中并没有包含正则表达式的类,如果要在Java中使用正则表达式必须使用第三方提供的正则表达式库,最有名的就是Jakart

    Java正则表达式详解

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。

    JScript 8.0 正则表达式语法

    正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。

    java正则表达式详解

    许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?你可以在这里找到答案

    Java 正则表达式详解

    如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 正则表达式30分钟入门教程 常用...然而,如果现在就需要使用正则表达式,又该怎么办

    JAVA正则表达式详解.doc

    许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理...

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。

    JScript详解对(希望对大家有用)

    JScript详解!!!!!!!!!!!!!!!!!11

    JScript.chm JScript帮助

    JScript.rar JScript.chm JScript帮助 JScript.rar JScript.chm JScript帮助 JScript.rar JScript.chm JScript帮助 JScript.rar JScript.chm JScript帮助

    微软《JScript 语言参考》中文

    微软《JScript 语言参考》中文 目录: JScript用户指南 JScript错误 ...JScript方法 JScript对象 JScript运算符 JScript属性 JScript语句 FileSystemObject用户指南 Scripting运行时库参考 正则表达式简介

    JScript中文帮助文档.zip

    欢迎使用 JScript 语言参考 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对...

Global site tag (gtag.js) - Google Analytics