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 相关文章推荐
多浏览器支持的右下角浮动窗口
Apr 01 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
JavaScript浏览器对象之一Window对象详解
Jun 03 Javascript
jQuery simpleModal插件的使用介绍
Aug 30 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
web前端vue实现插值文本和输出原始html
Jan 19 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
List Installed Hot Fixes
2007/06/12 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
如何运行Python程序的方法
2013/04/21 Python
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python排序函数的使用方法详解
2020/12/11 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
结构和类有什么异同
2012/07/16 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
核心价值观演讲稿
2014/05/13 职场文书
捐助感谢信
2015/01/22 职场文书
银行实习推荐信
2015/03/27 职场文书
太行山上观后感
2015/06/05 职场文书
企业年会祝酒词
2015/08/11 职场文书
卖车协议书范文
2016/03/23 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
Python使用Web框架Flask开发项目
2022/06/01 Python