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 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
Javascript优化技巧(文件瘦身篇)
Jan 28 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
通过location.replace禁止浏览器后退防止重复提交
Sep 04 Javascript
JQuery中DOM实现事件移除的方法
Jun 13 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 Javascript
基于canvas实现的绚丽圆圈效果完整实例
Jan 26 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
Javascript中弹窗confirm与prompt的区别
Oct 26 Javascript
vue 组件内获取actions的response方式
Nov 08 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python实现数据写入excel表格
2018/03/25 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python set集合使用方法解析
2019/11/05 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
给校长的建议书300字
2014/05/16 职场文书
生产车间标语
2014/06/11 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
小学思想品德教学反思
2016/02/24 职场文书
Jsonp劫持学习
2021/04/01 PHP