JavaScript:exec()方法的用法及说明
最近在看某知名js框架的源码,突然间发现自己对exec()方法竟然不太理解,然后就仔细的分析了一下这个方法
下面贴个exec()方法使用的代码出来
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
match = rquickExpr.exec( selector );
exec() 方法就是用来检索字符串中正则表达式的匹配,如果匹配到了那么就返回一个存放有结果的数组,如果没有匹配到就返回一个null
(个人感觉这个方法和php里面的preg_match特别像啊~O(∩_∩)O哈哈~)
exec() 方法使用起来比test方法和String对象的match方法要复杂的多
在这里说一下test方法和String对象的match方法
test()用于检测一个字符串是否匹配某个模式,也是一个正则匹配的方法,但是test()方法只会返回有没有匹配到规定的字符串,匹配到了就返回true。没有那么就返回false。
match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
match和test的区别在于它可以直接检测字符串中是不是含有某个值,而不需使用正则表达式,第二个区别就是match函数可以进行一次或多次模式匹配,将匹配结果按照一个数组进行返回。(使用单次匹配还是多次匹配这取决于在匹配模式中是否含有g,我自己感觉没有g的就相当于php里面的preg_match函数,有的就相当于preg_match_all函数,哈哈)
exec方法返回的数组的第 0 个元素是与正则表达式相匹配的文本
第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话)
第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话)
...
以此类推。
除了数组元素和 length 属性之外,exec() 方法还返回两个属性。
index 属性声明的是匹配文本的第一个字符的位置。
input 属性则存放的是被检索的字符串 string。
我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。
但是,当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。
它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。
当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。
lastIndex属性的意思就是当前匹配的字符串的最后一个字符的位置,比如说要在"abcdefg"中匹配"bcd",那么第一次匹配完成后的lastIndex就是4~
这就是说,你可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。
当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。
需要注意的是,如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。
JavaScript:exec()方法的用法及说明的更多相关文章
- javascript exec方法
题目 取出 "[大哭][尴尬][发怒][发怒][调皮][调皮][呲牙]" 串中[]里面的东西 思路 正则匹配,/\[(.+?)\]/ig; exec方法循环 exec() 方法的功 ...
- JavaScript exec()方法
exec() 方法用于检索字符串中的正则表达式的匹配.返回一个数组,其中存放匹配的结果.如果未找到匹配,则返回值为 null. var str = "我今年25岁明年26岁后年27岁千年24 ...
- JavaScript RegExp.exec() 方法
定义和用法: exec() 方法用于检索字符串中的正则表达式的匹配. 语法: RegExpObject.exec(string); RegExpObject:必须参数,正则表达式: string:必须 ...
- JS中正则匹配的三个方法match exec test的用法
javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...
- JavaScript RegExp对象的exec()方法
JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() ...
- 在HTML页面中实时获取新消息的方法 “JavaScript中的setInterval用法”
JavaScript中的setInterval用法(资料来源:博主---八神吻你 ) setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象.可以使用本动作更新来自数 ...
- JavaScript中String的math方法与RegExp的exec方法的区别
1.exec是正则表达式的方法,方法参数为字符串.match为字符串的方法,参数为正则表达式对象. 2.match与exec都返回数组.如果调用exec方法的正则表达式没有分组内容,则返回第一个匹配的 ...
- JavaScript——exec和match
题目17:Read the following javascript code: var someText="web2.0 .net2.0";var pattern=/(\w+)( ...
- JavaScript test() 方法
JavaScript test() 方法 JavaScript RegExp 对象 定义和用法 test() 方法用于检测一个字符串是否匹配某个模式. 语法 RegExpObject.test(str ...
随机推荐
- erlang pool模块。
出自: http://blog.sina.com.cn/s/blog_96b8a154010168ti.html
- Linux Kconfig及Makefile学习
内核源码树的目录下都有两个文档Kconfig (2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源 ...
- Codeforces Round #307 (Div. 2) C. GukiZ hates Boxes 贪心/二分
C. GukiZ hates Boxes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/551/ ...
- 【小白的java成长系列】——面向对象基础
今天来说说java面向对象的知识点~事实上.java在其发展过程中可以成功.非常大一部分原因是其面向对象的思想~ 1.概念 如今来说面向对象思想.也不是什么新的知识点了,我们知道如今非常多语言都有面向 ...
- HtmlAgilityPack.dll的使用 获取HTMLid
简介 本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻 ...
- stm32f107vc在IAR环境下,引用库函数的工程文件的配置方法
stm32做开发很方便的一个原因是大家可以稍稍放松对于硬件寄存器等的设置,因为stm32有了非常丰富和实用的库函数,外设文件等等,所以我们在使用的时候可以更加关注程序开发的过程和逻辑关系.但是,在开发 ...
- apache htaccess
#RewriteCond :重新条件#RewriteRule : 重写规则# .htaccess文件中的规则会以它们出现的顺序被处理 <IfModule mod_rewrite.c>Rew ...
- 关于解决Permission is only granted to system apps
一句话,clean一下这个Project!就OK了…… 不要被假象迷惑!
- C++对象内存模型1(堆栈模型)
对象内存模型 一. 栈(Stack) VS. 堆(heap) 栈 由系统自动管理,以执行函数为单位 空间大小编译时确定(参数+局部变量) 函数执行时,系统自动分配一个stack 函数执行结束时,系统立 ...
- SQL 必知必会-- 第1课:数据库基础和什么是SQL
第1课 了解SQL 1 1.1 数据库基础 11.2 什么是SQL 61.3 动手实践 71.4 小结 8 第一课主要是一些概念,具体笔记如下: 1,数据库(database):保存有组织的数据的容器 ...