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 flash激活
Oct 19 Javascript
javascript 拖放效果实现代码
Jan 22 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
Oct 16 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
JavaScript高阶函数_动力节点Java学院整理
Jun 28 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
js实现点击烟花特效
Oct 14 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
使用Python开发windows GUI程序入门实例
2014/10/23 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python实现趣味图片字符化
2019/04/30 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
兼职学生的自我评价
2013/11/24 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
社团活动总结格式
2014/08/29 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
董事长致辞
2015/07/29 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle