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 静态对象和构造函数的使用和公私问题
Mar 02 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
JavaScript简单下拉菜单特效
Sep 13 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
vue中keep-alive的用法及问题描述
May 15 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
vue里使用create, mounted调用方法
Apr 26 Vue.js
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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
初学Javascript的一些总结
2008/11/03 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
python任务调度实例分析
2015/05/19 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python计算列表内各元素的个数实例
2018/06/29 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
本科生职业生涯规划书范文
2014/01/21 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
施工安全协议书范本
2014/09/26 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
Spring整合Mybatis的全过程
2021/06/28 Java/Android