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 $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
js获取元素的外链样式的简单实现方法
Jun 06 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
Sep 23 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 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字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
详解php中的implements 使用
2017/06/13 PHP
JavaScript游戏之优化篇
2010/11/08 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
原生javascript中this几种常见用法总结
2020/02/24 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
sort命令的作用和用法
2012/11/04 面试题
工作交流会欢迎词
2014/01/12 职场文书
小学生元旦广播稿
2014/02/21 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
工作建议书范文
2014/05/13 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers