初学JavaScript正则表达式(十二)
text / exec方法
text()
var reg1 = /\w/;
var reg2 = /\w/g;
reg1.test('a') === true reg2.test('a') === true
reg1.test('a') === true reg2.test('a') === false
reg1.test('a') === true reg2.test('a') === true
lastIndex在作怪
while(reg1.test('ab')){
console.log(reg1.lastIndex) // 0 0 0 0...
}
while(reg2.test('ab')){
console.log(reg2.lastIndex) // 1 2
}
解决办法:
- (/\w/g).test('a') 每次都实例化一个新的规则,但是会增加内存开销,不建议
- reg2使用reg1模式,不需要加'g'全文搜索
exec()
非全局调用
- 调用非全局的RegExp对象的exec()时,返回数组
第一个元素是与正则表达式相匹配的文本
第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话)
第三个元素是与RegExpObject的第二个子表达式相匹配的文本(如果有的话)
。。。以此类推
var reg3 = /\d(\w)\d/; //非全局
var reg4 = /\d(\w)\d/g;
var ts = '1a2b3c4d5e';
var ret = reg3.exec(ts); // 匹配到的结果数组 ['1a2','a']
console.log(reg3.lastIndex + '\t' + ret.index + '\t' + ret.toString());
// "0 0 12a,a"
//非全局下lastIndex不生效,第二个0代表'第一个匹配结果是从下标为0的位置开始',匹配的结果数组转化为字符串
console.log(reg3.lastIndex + '\t' + ret.index + '\t' + ret.toString()); // "0 0 12a,a"
while(ret = reg4.exec(ts)){
console.log(reg4.lastIndex + '\t' + ret.index + '\t' + ret.toString());
//"3 0 1a2,a" "7 4 3c4,c"
}
整理自慕课网教学 点此进入
初学JavaScript正则表达式(十二)的更多相关文章
- 初学JavaScript正则表达式(十)
前瞻与后顾 断言 === assert 符合断言为正向,不符合为负向 例 'a2*3'.replace(/\w(?=\d)/g,'x') ------- x2*3 看看'\d'前面是不是'\w',如果 ...
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- 初学JavaScript正则表达式(二)
正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...
- JavaScript正则表达式(二)
定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...
- 前端笔记之JavaScript(十二)缓冲公式&检测设备&Data日期
一.JavaScript缓冲公式ease 原生JS没有自己的缓冲公式,但是你要自己推理的话,必须要懂一些数学和物理公式: 让div用100毫秒(帧),从left100px的位置变化到left800px ...
- 初学JavaScript正则表达式(八)
JavaScript正则贪婪模式与非贪婪模式 贪婪模式: 例: \d{3,6} 匹配数字3到6次(正则表达式默认为贪婪模式,即匹配最多次,失败即停) '12345678'.replace(/\d{3, ...
- javascript (十二)对象二
JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等等. 在 JavaScript 中,对象是拥有属性和方法的数据. 属性和方法 属性是与对象相关的值. 方法是能够在对象上执行的动 ...
- 深入浅出javascript(十二)继承——构造函数继承和组合继承
#题记: 有一水果类,抽象出属性包括:name(水果品种),price(价格),id(ID号).现有两个子类,分别为苹果,桔子,希望继承水果父类. 一.构造函数继承 构造函数继承相当把父类的属性在子类 ...
- JavaScript(十二)事件
Dom事件 1.DOM0级事件 on事件 只能 监听冒泡阶段 切只能绑定一个事件 dom.onclick = function(){}; 2.Dom2级事件 可以绑定多次事件 可以通过设置fla ...
随机推荐
- 成功安装SQL Server实例后 无法找到SQL Server Configuration Manager工具的解决方案
有一次成功安装SQL Server实例后 ,但是在所有程序中无法找到SQL Server Configuration Manager工具,以下步骤是我们当时的解决方案.最后成功将这个工具的转移到了桌面 ...
- python--django for 循环中,获取序号
功能需求:在前端页面中,for循环id会构不成连续的顺序号,所以要找到一种伪列的方式来根据数据量定义序号 因此就用到了在前端页面中的一个字段 forloop.counter,完美解决 1 <tb ...
- 201871010121-王方《面向对象程序设计(Java)》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/wf-001128/ 作 ...
- EXSI的使用
新建资源池 创建好的资源池和虚拟机 创建用户 角色就是权限的集合 右键点击添加. 创建完角色回到清单资源池 重点新登录 bios有一项叫来电自启动. 添加网桥
- NOIP 2012 文化之旅
洛谷 P1078 文化之旅 洛谷传送门 JDOJ 1788: [NOIP2012]文化之旅 T4 JDOJ传送门 Description Input Output Sample Input Input ...
- 在Windows系统中安装matplotlib,需要注意的问题
matplotlib的下载地址:https://pypi.org/project/matplotlib/#files 以python3.6为例,适合的版本matplotlib-3.1.1-cp36-c ...
- 一些你不知道的css特性【一】
浏览器禁止用户在标签的style中使用js写入"!important"的特性 我们在使用jQuery设置css的时候 $('#text').css('height', '200px ...
- Element类
ElementTree API主要包含在Element类中,ElementTree API就是XML树相关的函数 追加子节点有两种方式,一种是使用append(),另一种是使用SubElement() ...
- vue 仿微信朋友圈9张图上传功能
项目需求要求用户上传商品的时候可以一次性上传9张图,多余9张提示‘只能上传9张图’,并且每张图右上角有个删除按钮,图片也可以点击放大. 出来的效果图如下: 话不多说,上代码: <el-form- ...
- Springboot整合Thmeleaf
1.概述 Thymeleaf类似JSP.Velocity.Freemarker都是模板引擎,主要用来展示数据,原理如下 springboot官网还是推荐使用Thymeleaf而不是jsp, 不使用js ...