正则表达式 match 和 exec 比较
match 和 exec 主要有两点不同:
1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示:
var re=new RegExp(/\d/); re.exec( "abc4def" );
或者使用perl风格:
/\d/.exec( "abc4def" );
match才是字符串类提供的方法,它的参数是正则表达式对象,如下用法是正确的:
"abc4def".match(\d);
或者
"abc4def".match("abc");
2.exec和match返回的都是数组
- 执行exec方法的正则表达式没有分组,那么如果有匹配,他将返回一个只有一个元素的数组;如果没有匹配则返回null。
- exec 不支持 i m g
下面两个alert函数弹出的信息是一样的:
var str= "cat,hat" ; var p=/at/; //没有g属性 alert(p.exec(str)) //["at"] alert(str.match(p)) //["at"]
这时exec和match 方法相等
var str= "cat,hat" ; var p=/at/g; //注意g属性 alert(p.exec(str)) //["at"]
alert(str.match(p)) //["at","at"]
因为exec永远只返回第一个匹配,而match在正则指定了g属性的时候,会返回所有匹配。
3.exec如果找到了匹配,而且包含分组的话,返回的数组将包含多个元素,第一个元素是找到的匹配,之后的元素依次为该匹配中的第一、第二...个分组(反向引用)
如下的代码将弹出"cat2,at":
var str= "cat2,hat8" ; var p=/c(at)\d/; alert(p.exec(str)) //["cat2","at"]
match函数在满足如下条件下将越俎代庖,实现和exec一样的功能:
- 1、正则表达式中含有分组(括号)
- 2、返回唯一的匹配 ,不使用 g,m时候
var str= "cat2,hat8" ; var p=/c(at)\d/; alert(p.exec(str)) //["cat2","at"] alert(str.match(p)) //["cat2","at"]
var p=/c(at)\d/g;alert(str.match(p))//["cat2","at"]
4. 分组匹配, (?:) 不参与分组
var regis=/^(?:[a-z]+(\d)|(#))$/; regis.exec("ab2") //["ab2","2",undefined] regis.exec("#") //["#",undefined,"#"] ,注意 "ab#" 返回的是 null
有两个分组,(\d)和 (#),虽然用 | 分隔,但是两个都参与分组
总结:
exec 永远返回的是第一个匹配的元素,如果分组其返回数组包括第一个匹配的字串,以及所有分组的反向引用
match 是返回所有匹配的字符串的数组,但是正则表达式必须指定全局g属性才能返回所有匹配,不指定g属性与exec的效果相同。
正则表达式 match 和 exec 比较的更多相关文章
- 正则表达式之g标志,match和 exec
1.g标志 g标志一般是与match和exec来连用,否则g标志没有太大的意义. 先来看一个带g标志的例子: var str = "tankZHang (231144) tank yi ...
- 正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...
- 正则表达式之match与exec【转的 楼兰之风】
彻底领悟javascript中的exec与match方法 阅读本文之前,请先看下面一道题: 题目17:Read the following javascript code: var someText= ...
- js正则表达式中test,exec,match方法的区别说明
js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...
- 探究js正则匹配方法:match和exec
match是字符串方法,写法为:str.match(reg) exec是正则表达式方法,写法为:reg.exec(str) match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是nu ...
- JavaScript match()方法和正则表达式match()
先介绍参数为普通字符串的使用方式,此时match方法的返回值是存放首次匹配内容的数组.如果没有找到匹配结果,返回null.语法结构: 1 str.match(searchvalue)参数解析:(1). ...
- js正则表达式中test,exec,match方法的区别
test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...
- js正则函数match、exec、test、search、replace、split使用介绍集合,学习正则表达式的朋友可以参考下。
match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) 参数 stringObj 必选项.对其进行查找的 String 对 ...
- JavaScript中正则表达式test()、exec()、match() 方法
转自http://www.cnblogs.com/jane-y/articles/5183859.html 1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str ...
随机推荐
- javascript 常见方法记录
1,trim():去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim.ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写. <script langu ...
- InstallShield如何做Excel安装与否的检测
传统的方法 一般都会从注册表入手,检测注册表中是否存在某项来判断是否安装了Office,还可以通过注册表信息来判断安装的具体版本. 存在的问题 由于系统的不同.注册表的损坏.安装包的不同等等原因,读取 ...
- 在Windows上安装虚拟机详细图文教程
用虚拟机来安装最新的软件,安装最新的系统等等比较保险,可以避免安装不顺利影响自己原来的系统和应用,想尝鲜又担心自己完全更换系统不适应的朋友可以尝试. 虚拟机下载:https://yunpan.cn/c ...
- 看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
本节重点介绍 nova-scheduler 的调度机制和实现方法:即解决如何选择在哪个计算节点上启动 instance 的问题. 创建 Instance 时,用户会提出资源需求,例如 CPU.内存.磁 ...
- iftop与dstat-一次网站故障分析经历
一次网站分析与解决的经历,最后结果虽然很简单但是过程比较曲折.记录一下: 今天访问网站首页十分缓慢,页面半天都加载不出来.于是上服务器看看情况,通过top看到load和cpu以及磁盘io都很低,只能祭 ...
- HashMap实现原理分析(转)
文章转自:http://blog.csdn.net/vking_wang/article/details/14166593 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但 ...
- 树莓派搭建ActiveMQ
树莓派上安装ActiveMQ和在其它Linux发行版基本相同,只是在开防火墙端口时有区别. 硬件信息: 树莓派3B型,Raspbian系统 安装 //下载ActiveMQ安装包 http:// ...
- C#学习笔记-输入数据判断(int、double、string)
代码: using System; using System.Windows.Forms; namespace CheckInput { public partial class Form1 : Fo ...
- Leetcode: plus one
June 22, 2015 Given a number represented as an array of digits, plus one to the number. Leetcode: pl ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...