首页 > JavaScript > JavaScript 定义正则表达式的两种形式:RegExp(),正则表达式直接量
2009八月1

JavaScript 定义正则表达式的两种形式:RegExp(),正则表达式直接量

每当请教别人正则表达式的一些问题时,总会脸红,没办法,咱这脑袋实在记不住这些玩意。只有“坐观垂钓者,徒有羡鱼情”的份。 今天呢就来简单介绍一下在 JavaScript 中定义正则表达式的两种形式,首先声明的是,正则表达式是一门高深的学问,我只能略微的给大家介绍一下,因为我也是个半吊子。

JavaScript 中的正则表达式 :

先来简单介绍一下JavaScript中的正则表达式。ECMAScript v3 对 JavaScript 正则表达式进行了标准化。JavaScript 1.2 实现了ECMAScript v3 要求的正则表达式的子集,JavaScript 1.5实现了完整的标准。JavaScript的正则表达式完全以Perl程序设计语言的正则表达式工具为基础,所以如果您用过Perl语言,那我将要介绍的东西对您来讲绝对是小菜一碟。具体点来说就是:

JavaScript 1.2 实现了 Perl 4 的正则表达式,JavaScript 1.5 实现了 Perl 5 的正则表达式的大型子集。

用RegExp()构造函数 定义JavaScript的正则表达式 :

在JavaScript中,正则表达式由RegExp对象表式。根据我们之前介绍的内容,可以使用RegExp()构造函数创建RegExp对象。

构造函数RegExp()有一个或两个字符串参数,它将创建一个新的RegExp对象。该构造函数的第一个参数是包含正则表达式主体的字符串,即稍候介绍的正则表达式直接量中出现在斜线对之间的文本。第二个参数是可选的。如果提供了此参数,它说明的就是该正则表达式的标志,这个我后面的日志会介绍到(敬请关注)。

用RegExp()构造函数创建正则表达式示例:

//定义一个全局的,九个数字的正则表达式
var pattern = new RegExp("\\d{9}","g");

用正则表达式直接量 定义JavaScript的正则表达式 :

JavaScript 还提供正则表达式直接量这种语法,使您可以更方便的创建JavaScript正则表达式。其被定义为包含在一对斜杠(/)之间的字符。一般大家在写js脚本的时候,比较常见的创建正则表达式的方法就是通过使用正则表达式直接量定义的。

用正则表达式直接量创建正则表达式示例:

//定义一个全局的,九个数字的正则表达式
var pattern = /\d{9}/;

需要注意的地方 :

无论是正则表达式直接量还是正则表达式都使用了字符\表示转义序列,所以当你将正则表达式作为 字符串直接量传递给RegExp()时,必须用\\来替换所有的\字符。示例大家可以看我用RegExp()构造函数定义JavaScript正则表达式的例子。

总结 :

无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象(正则表达式就是用RegExp对象来表示的)都是很容易的。但是较为困难的是用正则表达式语法来描述字符的模式。通俗点说就是正则表达式定义是很容易的,但是定义的是否准确这就需要工夫了,小弟不才自认水平不行。所以以后的讲解中难免会有错误,请大家不吝指教。网上有比较好的教程:正则表达式30分钟入门教程,大家如果感兴趣可以去读一下。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/08/01/1277/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

11 Responses to “JavaScript 定义正则表达式的两种形式:RegExp(),正则表达式直接量”

  1. #1 beetea 回复 | 引用 Post:2009-08-02 01:26

    \转义一直搞不清 :x

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-08-02 08:37

    @beetea
    转义的意思就是让程序把转义后的符号当真正的符号。。

    [回复]

  3. #3 小Bee 回复 | 引用 Post:2009-08-02 08:43

    围观上课的学生~路过….跷课~

    [回复]

  4. #4 simaopig 回复 | 引用 Post:2009-08-02 13:03

    @小Bee
    呃。你还在上课?不是放假了吗?

    [回复]

  5. #5 荒野无灯 回复 | 引用 Post:2009-08-03 08:45

    呵呵,换风格啦?
    好久没来了,还有一个月假期……
    正则表达式,我喜欢

    [回复]

  6. #6 荒野无灯 回复 | 引用 Post:2009-08-03 08:47

    10 queries in 0.345 seconds.(你的博客)
    41 queries. 0.650 seconds。(我的博客)
    差距啊,看来我得找时间优化一下啦

    [回复]

  7. #7 simaopig 回复 | 引用 Post:2009-08-03 10:23

    @荒野无灯
    呵呵,你还有一个月假期?MY GOD ,现在的假期咋这么长?

    [回复]

  8. #8 simaopig 回复 | 引用 Post:2009-08-03 10:25

    @荒野无灯
    去了好些个插件。呵呵。速度上其实感觉没快多少。。

    [回复]

  9. #9 荒野无灯 回复 | 引用 Post:2009-08-03 21:00

    simaopig :@荒野无灯 呵呵,你还有一个月假期?MY GOD ,现在的假期咋这么长?

    @simaopig
    呵呵,我们暑假有两个月啊

    [回复]

  10. #10 simaopig 回复 | 引用 Post:2009-08-03 21:10

    @荒野无灯
    唉,我都不记得暑假啥感觉了。。太奢侈了这东西。

    [回复]

  11. #11 风也飘泊 回复 | 引用 Post:2009-08-05 17:25

    我买了一本JS的书,挺好的,但上面居然没讲正则表达式,昏

    以后如果我不懂,那我就上这儿来找得了.

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)