match和exec

1、基本用法

  match:str.match(reg)

  exec:reg.exec(str)

2、比较

  匹配不到返回null

  reg不是全局搜索,两者的返回结果是一样的数组。    [‘匹配到的结果‘,‘提取的内容1‘,...,‘提取的内容n‘]

reg全局搜索: match返回数组  [‘匹配到的结果1‘,...,‘匹配到的结果n‘]

         exec返回的结果不受影响。     [‘匹配到的结果‘,‘提取的内容1‘,...,‘提取的内容n‘],但多次执行时匹配结果的index会改变

3、举例

var reg1 = /(a)+(\d)+/,      //  至少一个a带至少1个数字,并提取
    reg2 = /(a)+(\d)+/g,
    str = "afeasfa32fefb32a567";

reg1.exec(str)   //  ["a32", "a", "2"]
str.match(reg1)  //  ["a32", "a", "2"] ,str.match(reg1,callback)

reg2.exec(str)  // ["a32", "a", "2"]
reg2.exec(str)  // ["aaaa567", "a", "7"]
reg2.exec(str)  // null
str.match(reg2)  //  ["a32","aaaa567"]
//  /(a)|(\d)+/.exec("fesf32fefb32567")  ["32",undefined,"2"]//  "fesf32fefb32567".match(/(a)|(\d)+/) ["32",undefined,"2"]
 
时间: 2024-11-05 22:03:42

match和exec的相关文章

js正则函数match、exec、test、search、replace、split使用介绍集合

原文 http://www.jb51.net/article/28007.htm js正则函数match.exec.test.search.replace.split使用介绍集合,学习正则表达式的朋友可以参考下. match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) 参数 stringObj 必选项.对其进行查找的 String 对象或字符串文字. rgExp 必选项.为包含正则表达式模式和可用标志的正则表达式对象.

【javascript】正则表达式match、exec和test的使用

正则表达式match.exec和test的使用 match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是null:test在匹配成功是返回true,在没有匹配时返回的是false.match是String的方法,而test和exec是RegExp的方法.本文探讨的是全局匹配与分组匹配的问题,并有源码附着. 一.全局匹配 1.正则表达式可以使用RegExp对象定义,也可以使用常量表达式定义. var regexp=new RegExp(/\w+/gi); 或者 var regexp

正则表达式之match与exec[转的楼兰之风的]

彻底领悟javascript中的exec与match方法 阅读本文之前,请先看下面一道题: 题目17:Read the following javascript code: var someText="web2.0 .net2.0";var pattern=/(\w+)(\d)\.(\d)/g;var outCome_exec=pattern.exec(someText);var outCome_matc=someText.match(pattern); What is outCome

正则表达式 match 和 exec 比较

match 和 exec 主要有两点不同: 1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示: var re=new RegExp(/\d/); re.exec( "abc4def" ); 或者使用perl风格: /\d/.exec( "abc4def" ); match才是字符串类提供的方法,它的参数是正则表达式对象,如下用法是正确的: "abc4def".match(\d); 或者 "abc4def&

探究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正则表达式的match test exec replace函数

js正则表达式的方法:一种正则在前,一种正则在后: 使用: 1.exec var res = /\-[a-z]/g .exec("font-size"); console.log(res); 得到的结果: 所以返回的是一个数组,第一个为匹配值,第二个是匹配的位置,第三个是输入的数 2.test var res = /\-[a-z]/g .test("font-size");console.log(res); 返回为一个布尔值 3.match var res =(&q

JavaScript match 和 exec 备忘笔记

这是一道广为引用的面试题:var someText="web2.0 .net2.0"; var pattern=/(\w+)(\d)\.(\d)/g; var outCome_exec=pattern.exec(someText); var outCome_matc=someText.match(pattern); What is outCome_exec[1] and outCome_matc[1]? Choice A: true Choice B: false Choice C:

match和exec的用法区别

//exec and match //1 无子类与全局var str='abcde';var reg=/abc/;alert(str.match(reg)); //abcalert(reg.exec(str)); //abc //2 有子类无全局var str='abcde';var reg=/ab(c)/;alert(reg.exec(str)); //abc,dalert(str.match(reg)); //abc //3 有全局无子类var str='abcdeabc';var reg=

match.exec深入学习

1 首先match和exec的用法 /\d/.exec("ddss3"); "ddss33".match(/\d/) //都得到["3"] 2 /\d/g.exec("ddss33") "ddss33".match(/\d/g) //["3"] //["3", "3"] 结论:g全局下:exec在没有分组的情况下只返回第一个元素,match返回全部