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动态改变div宽度和高度
Feb 09 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 Javascript
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
微信小程序实现电子签名并导出图片
May 27 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python tkinter常用操作代码实例
2020/01/03 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
初中教师个人总结
2015/02/10 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript
python保存图片的四个常用方法
2022/02/28 Python