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下用gb2312编码解码实现方法
Dec 31 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
JavaScript中Math.SQRT2属性的使用详解
Jun 14 Javascript
JavaScript设计模式经典之命令模式
Feb 24 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
Angularjs中ng-repeat的简单实例
Aug 25 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
axios使用拦截器统一处理所有的http请求的方法
Nov 02 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 Javascript
vue-router为激活的路由设置样式操作
Jul 18 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
小谈php正则提取图片地址
2014/03/27 PHP
8个PHP数组面试题
2015/06/23 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
一套软件测试笔试题
2014/07/25 面试题
工艺工程师岗位职责
2014/03/04 职场文书
实习协议书
2015/01/27 职场文书
师德培训心得体会2016
2016/01/09 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
Python实现单例模式的5种方法
2021/06/15 Python