十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

ECMAScript RegExp类型及简单应用

百恒网络 2012-03-24 1285

ECMAScript通过RegExp类型来支持正则表达式。使用下面类似Perl的语法,就可以创建一个正则表达式:

var expression=/pattern/flags;

其中的模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组,向前查找,以及反向引用。每个正则表达式都可带有一或多个标志( flags),用以标明正则表达 式的行为。正则表达式的匹配模式支持下列3个标志:

◎g——表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;

◎i——表示不区分大小写( case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

◎m——表示多行( multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

因此,一个正则表达式就是一个模式与上述3个标志的组合体。不同组合产生不结果,如下面的例子所示:

/*

*匹配字符串中所有"at"的实例

*/

var patternl=/at/g;

/*

*匹配第一个”bat”或”cat",不区分大小写

*/

var pattern2=/[bcl at/i;

/*

*匹配所有以”at”结尾的3个字符的组合,不区分大小写

*/

var pattern3=/.at/gi;

与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:

( [ { ^ $ | ) ? * + .]}

这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符.就必须对它们进行转义。下面给出几个例子:

/*

*匹配第一个" bat”或"cat",不区分大小写

*/

var patternl=/[bc] at/i;

*匹配第一个”[bc]at",不区分大小写

*/

var pattern2=/[bc] at/i;

*匹配所有以"at”结尾的3个字符的组合,不区分大小写

*/

var pattern3=/.at/gi;

*匹配所有”.at”,不区分大小写

*/

var pattern4=/.at/gi;

在上面的例子中,patternl匹配第一个”bat”或”cat”,不区分大小写。而要想直接匹配"[bc]at"的话,就需要像定义pattern2 -样,对其中的两个方括号进行转义。对于pattern3来说,句点表 示位于”at”之前的任意一个可以构成匹配项的字符。但如果想匹配”.at”,则必须对句点本身进行转义,如pattern4所示。

前面举的这些例子都是以字面量形式来定义的正则表达式。另一种创建正则表达式的方式是使用RegExp构造函数,它接受两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义,如下面的例子所示:

/*

*匹配第一个“bat n或”cat”,不区分大小写

*/

var patternl=/[bc]at/i;

/*

*与patternl相同,只不过是使用构造函数创建的

*/

var pattern2=new RegExp(”[bc] at".”i");

在此,南昌网站建设公司前端开发工程师提醒,patternl和pattern2是两个完全等价的正则表达式。要注意的是,传递给RegExp构造函数的两个参数都是字符串(不能把正则表达式字面量传递给RegExp构造函数)。由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符进行双重转义。所有元字符都必须双重转义,那些已经转义过的字符也是如此,例如n(字符在字符串中通常被转义为\,而在正则表达式字符串中就会变成\)。下表给出了一些模式,左边是这些模式的字面量形式,右边是使用RegExp构造函数定义相同模式时使用的字符串。

字面量模式 等价的字符串

/{bc}at/ "[bc]at"

/.at/ "\.at"

/name/age/ "name /age"

/d.d{1,3}/ ”\d.\d(1,2)”

/whello\123/ ”W\hello\123”

希望本文对广大站长或从事企业网站建设公司的团队有所帮助,如对此不太理解的,可以与南昌网络公司百恒网络技术部联系。我们很高兴与广大站长和从事企业网站建设公司技术人员分享我们的技术和经验。


400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×