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小技巧
Jul 21 Javascript
Iframe thickbox2.0使用的方法
Mar 05 Javascript
Prototype Date对象 学习
Jul 12 Javascript
循环 vs 递归浅谈
Feb 28 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
Jun 13 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
javaScript封装的各种写法
Aug 14 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
Oct 31 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 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
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php头像上传预览实例代码
2017/05/02 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
js html实现计算器功能
2018/11/13 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python的命名规则知识点总结
2019/10/04 Python
python与idea的集成的实现
2020/11/20 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
简短证婚人证婚词
2014/01/09 职场文书
校园活动宣传方案
2014/03/28 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
煤矿安全承诺书
2014/05/22 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
家具商场的活动方案
2014/08/16 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js