js正则表达式中test,exec,match方法的区别说明


Posted in Javascript onJanuary 29, 2014

js正则表达式中test,exec,match方法的区别说明

test
test 返回 Boolean,查找对应的字符串中是否存在模式。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true

exec
exec 查找并返回当前的匹配结果,并以数组的形式返回。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);
如果不存在模式,则 arr 为 null,否则 arr 总是一个长度为 1 的数组,其值就是当前匹配项。arr 还有三个属性:index 当前匹配项的位置;lastIndex 当前匹配项结束的位置(index + 当前匹配项的长度);input 如上示例中 input 就是 str。

exec 方法受参数 g 的影响。若指定了 g,则下次调用 exec 时,会从上个匹配的 lastIndex 开始查找。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述两个输出都是 1a。现在再看看指定参数 g:
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述第一个输出 1a,第二个输出 1b。

match
match 是 String 对象的一个方法。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));
match 这个方法有点像 exec,但:exec 是 RegExp 对象的方法;math 是 String 对象的方法。二者还有一个不同点,就是对参数 g 的解释。
如果指定了参数 g,那么 match 一次返回所有的结果。
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str.match(reg)); // 此句同上句的结果是一样的
此结果为一个数组,有三个元素,分别是:1a、1b、1c。

JavaScript中经常用到正则表达式, 而正则表达式中经常用到Match和Test这两个函数,当然还有Exec. 这里以代码实例来区分它们之间的不同吧.

Match Example

var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs = str.match(regexp);
//rs= Array('A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e');

Test Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs = regexp.test(str);
// rs = true; boolean

Exc Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs;
while ((rs = regexp.exec(str)) != null)
{
    document.write(rs);
    document.write(regexp.lastIndex);
    document.write("<br />");
}
OUTPUT
---------------------------------
A    1
B   2
C   3
D   4
E   5
a   27
b   28
c   29
d   30
e   31

Another   Exc Example
var regexp = /ab*/g;
var str = "abbcdefabh";
var rs;
while ((rs = regexp.exec(str)) != null)
{
    document.write(rs);
    document.write(regexp.lastIndex);
    document.write("<br />");
}
OUTPUT
---------------------------------
abb   3
ab     9
Javascript 相关文章推荐
js prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
ExpressJS入门实例
Jan 14 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
基于jquery实现简单的分页控件
Mar 17 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
详解js数组的完全随机排列算法
Dec 16 Javascript
vue实现前进刷新后退不刷新效果
Jan 26 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
jQuery 实现扁平式小清新导航
Jul 07 jQuery
js的正则test,match,exec详细解析
Jan 29 #Javascript
js正则表达exec与match的区别说明
Jan 29 #Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 #Javascript
用jquery等比例控制图片宽高的具体实现
Jan 28 #Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 #Javascript
用js正确判断用户名cookie是否存在的方法
Jan 28 #Javascript
原生javascript实现无间缝滚动示例
Jan 28 #Javascript
You might like
PHP 身份验证方面的函数
2009/10/11 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python读取网页内容的方法
2015/07/30 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
详解python 中in 的 用法
2019/12/12 Python
python统计字符的个数代码实例
2020/02/07 Python
django修改models重建数据库的操作
2020/03/31 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
python实现批处理文件
2020/07/28 Python
香港交友网站:be2香港
2018/07/22 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
教师节祝酒词
2015/08/11 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书