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 相关文章推荐
解决 FireFox 下[使用event很麻烦] 的问题.
Aug 22 Javascript
慎用 somefunction.prototype 分析
Jun 02 Javascript
jQuery版Tab标签切换
Mar 16 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
JavaScript中的操作符==与===介绍
Dec 31 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
Nov 18 Javascript
JS传值出现中文参数乱码的解决方法
Jun 30 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
用JS实现选项卡
Mar 23 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 高级课程笔记 面向对象
2009/06/21 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
详解python3中tkinter知识点
2018/06/21 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
给儿子的表扬信
2014/01/15 职场文书
新郎接新娘保证书
2015/05/08 职场文书
公司庆典主持词
2015/07/04 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS