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 相关文章推荐
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
Mar 24 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
js中less常用的方法小结
Aug 09 Javascript
Vue+Element使用富文本编辑器的示例代码
Aug 14 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 Javascript
JavaScript控制台的更多功能
Apr 28 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调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
python创建临时文件夹的方法
2015/07/06 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python 网络编程详解及简单实例
2017/04/25 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
shell程序中如何注释
2012/01/28 面试题
网上蛋糕店创业计划书
2014/01/24 职场文书
公务员综合考察材料
2014/02/01 职场文书
美术教师岗位职责
2014/03/18 职场文书
大学开学计划书
2014/04/30 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
房屋转让协议书
2014/10/18 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python