转转转---js正则表达exec与match的区别说明

正则表达式对象有两个定义方式::

1、第一种定义:

new RegExp(pattern, attributes);如var reg = new RegExp("abc","g")

其中pattern为表示表达式内容,如上表示匹配abc

attributes:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i

2、第二种定义:/pattern/attributes.

如:var reg = /abc/g;

正则表达的规则一些规则在此不再说明,只记录exec和match的区别:

1、exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示:

如上定义 
var reg = new RegExp("abc") ; 
var str = "3abc4,5abc6";
reg.exec(str);

2、match是字符串执行匹配正则表达式规则的方法,他的参数是正则表达,如

var reg = new RegExp("abc") ; 
var str = "3abc4,5abc6";
str.match(reg);

3、exec和match返回的都是数组;

如果exec执行的正则表达式没有子表达式(小括号内的内容,如/abc(\s*)/中的(\s*) ),如果有匹配,就返回第一个匹配的字符串内容,此时的数组仅有一个元素,如果没有匹配返回null;

var reg = new RegExp("abc") ; 
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

执行如上代码,你会发现两者内容均为一样:abc,

4、如果定义正则表达对象为全局匹配如:

var reg = new RegExp("abc","g") ; 
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

则为abc和abc,abc;因为match执行了全局匹配查询;而exec如果没有子表达式只会找到一个匹配的即返回。

5、当表示中含有子表达式的情况:

var reg = new RegExp("a(bc)") ; 
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

你会发现两者执行的结果都是:abc,bc;

6、当如果正则表达式对象定义为为全局匹配

var reg = new RegExp("a(bc)","g") ; 
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

则两者返回的结果是abc,bc和abc,abc,

总结为:

1、当正则表达式无子表达式,并且定义为非全局匹配时,exec和match执行的结果是一样,均返回第一个匹配的字符串内容;

2、当正则表达式无子表达式,并且定义为全局匹配时,exec和match执行,做存在多处匹配内容,则match返回的是多个元素数组;

3、当正则表达式有子表示时,并且定义为非全局匹配,exec和match执行的结果是一样如上边的第5种情况;

4、当正则表达式有子表示时,并且定义为全局匹配,exec和match执行的结果不一样,此时match将忽略子表达式,只查找全匹配正则表达式并返回所有内容,如上第6种情况;

也就说,exec与全局是否定义无关系,而match则于全局相关联,当定义为非全局,两者执行结果相同

时间: 2024-10-12 03:39:37

转转转---js正则表达exec与match的区别说明的相关文章

javascript正则表达式exec()与match()的区别说明

本篇文章主要是对js正则表达exec与match的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 正则表达的规则一些规则在此不再说明,只记录exec和match的区别: 1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示: 如上定义 var reg = new RegExp("abc") ; var str = "3abc4,5abc6";reg.exec(str ); 2.match是字符串执行匹配正则表达式规则的方法

探究js正则匹配方法:match和exec

match是字符串方法,写法为:str.match(reg) exec是正则表达式方法,写法为:reg.exec(str) match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是null,故在没有深入了解两者的使用规则前,会误以为两者的使用效果是一样的,下面在几种情况中对match和exec进行区分. 1.全局匹配: 当不使用全局匹配时,两者的匹配效果是一样的,仅返回第一次匹配成功的结果: var s = "aaa bbb ccc"; var reg = /\b\w+

js 正则表达写法

一 javascript正则表达式的基本知识 1     javascript 正则对象创建 和用法 声明javascript 正则表达式 var reCat = new RegExp("cat");    你也可以     var reCat = /cat/;    //Perl 风格 (推荐) 2 学习最常用的 test exec match search   replace   split 6个方法 1) test   检查指定的字符串是否存在 var data = "

js正则表达大合集【转载自:http://caibaojian.com】

[注明原文链接吧]:http://caibaojian.com 1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //输出 true console.log(uPattern.test("caibaojian")); 2 密码强度正则 //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 var pPattern = /^.*(?=.{6,})(?=.

js正则表达匹配&简单验证

var common = { isNotNull:function(object){ if(object == null || object == '' || object == undefined){ return false; } return true; }, MBToGB:function(mb){ return Math.round(((mb / (1024))*100)/100); }, myRound:function(number){ var result = Math.roun

js正则表达语法

/* *通过量词可以设置一个内容出现的次数 *量词只对它前边的一个内容起作用.所以在作用多个时需要用小括号()来向计算机说明这是一个整体. *-{n}代表正好出现n次. *-{m,n}出现了m-n次. *-{m,}m次以上. */ var reg = /a{3}/ : //ababab reg = /(ab){3}/; reg = /ab{1,3}c/; //abbbc; reg = /b{3}/; //bbb; reg = /a{2,}/ //bbbaa; RegExp RegExp对象的方法

js正则表达使用实例

(1)替换掉htmlStr中所有的<font..>和</font> var htmlstr='<font color="#fff">ABC</font><p>dfd</p><font color="#fff">EFG</font>';alert(htmlstr.replace(/<[^<>]*?font[^<>]*?>/gi,"

js正则表达之中的字符

1,.(点):表示除换行符(\n)和其他Unicode行终止符之外的任意字符.如果要包含\n,用[.\n]. 2,*:匹配前面的子表达式出现0次或多次,表示{0,}. 3,?:匹配前面的子表达式出现0次或1次,表示{0,1}. 4,+:匹配前面的子表达式出现1次或多次,表示{1,}. 5,():括号要匹配的字符串,表达式中有几个()就有几个相应的匹配字符串.(\s*)表示连续空格的字符串. 6,[]:定义匹配的字符范围. [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字. 7,{}

JavaScript中正则表达式test()、exec()、match() 方法区别

1)test()方法 var str = "wzltestreg"; var reg = new RegExp("wzl", ""); alert(reg.test(str)); // true test 返回 Boolean,查找对应的字符串中是否存在模式. 2)RegExp类的方法exec(string) http://www.cnblogs.com/xiehuiqi220/archive/2008/12/01/1327487.html 3)