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 相关文章推荐
javascript 选择文件夹对话框(web)
Jul 07 Javascript
javascript 面向对象全新理练之继承与多态
Dec 03 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
javascript 使用 NodeList需要注意的问题
Mar 04 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
Aug 25 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
vue之debounce属性被移除及处理详解
Nov 13 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
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python函数中不定长参数的写法
2019/02/13 Python
django model object序列化实例
2020/03/13 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
财务部副经理岗位职责
2014/03/14 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
圣诞节开幕词
2015/01/29 职场文书
介绍信如何写
2015/01/31 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
小学新课改心得体会
2016/01/22 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
python for循环赋值问题
2021/06/03 Python
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL