每当请教别人正则表达式的一些问题时,总会脸红,没办法,咱这脑袋实在记不住这些玩意。只有“坐观垂钓者,徒有羡鱼情 ”的份。 今天呢就来简单介绍一下在 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分钟入门教程,大家如果感兴趣可以去读一下。