replace的回调函数

var string = "abc123-ii3-abc321-ii2";
string.replace(/(\d)-([\da-z]{1,4})/g,function () {
    console.log(arguments)
})
//结果如下
["3-ii3", "3", "ii3", 5, "abc123-ii3-abc321-ii2", callee: function, Symbol(Symbol.iterator): function]
["1-ii2", "1", "ii2", 16, "abc123-ii3-abc321-ii2", callee: function, Symbol(Symbol.iterator): function]

正则表达式里存在全局g标志时,匹配过程是一轮一轮的进行的,第一轮匹配时,该表达式匹配到了 3-ii3 ,然后匹配结束,此时的生成了一个arguments数组,第一个元素为此时匹配到的字符,第二个元素为正则式子第一组匹配到的内容,第三个为第二组同上,第四个为原字符串。然后从上次匹配到的最后一个字符索引+1之后开始匹配,就这样直到遍历完整个字符串为止。

regexp.exec(string)返回一个数组

["1-ii2", "1", "ii2", index: 16, input: "abc123-ii3-abc321-ii2"]当为全局匹配时,第一个元素为匹配到的最后一个内容,其余元素也是最后一次匹配到时的结果
时间: 2024-12-28 01:43:41

replace的回调函数的相关文章

js小知识-replace的回调函数

replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串.模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数. 注意:原字符串不会改变. 语法 str.replace(regexp|substr, newSubStr|function) 参数 regexp (pattern) 一个RegExp 对象或者其字面量.该正则所匹配的内容会被第二个参数的返回值替换掉. substr (pattern) 一个要被 newSubStr 替换的字

回调函数在replace方法中的应用

处理字符串是项目中经常会遇到的问题,对于长度比较大的字符串如何作一次性处理是需要我们去考虑的,这里给个例子: 把字符串"get-element-by-id"变成"getElementById": 方法一: var a = "get-by-element-by-id"; var b = a.split("-") for(var i = 1 ;i<b.length;i++){ b[i].charAt(0).toUpperCa

正则replace 回调函数里接收的参数是什么?

前言 我们都知道 replace 在做替换处理方面会很常用,通常也是第一个会想到的方法.replace 第一个参数可以传入 string 或 RegExp,第二个参数可以传入 string 或 一个回调函数.在能够传入回调函数之后,事情就开始变得不简单了(如果有用过map,filter等函数,你就知道传入回调函数的强大).在做替换处理时,我们能够获取到更多的有效信息,处理的手段也可以更加多样化,而不是单纯的替换.接下来我们,来看看回调函数里接受的参数到底是什么? 回调中接收到的参数 回调中最少可

cocos2d-x 2.2.0 怎样在lua中注冊回调函数给C++

cocos2d-x内部使用tolua进行lua绑定.可是引擎并没有提供一个通用的接口让我们能够把一个lua函数注冊给C++层面的回调事件. 翻看引擎的lua绑定代码,我们能够仿照引擎中的方法来做. 值得吐槽的是.这套流程在开发中差点儿是不可避免的,而cocos2d-x居然不把它作为一个公用接口暴露给开发人员,而须要我自己动手,真是无奈. 以下以一个简单的消息分发类为样例,演示怎样完毕这一工作. MessageDispatcher.h class MessageDispather { public

js的回调函数 一些例子

这边用bootstrap 3.0的  上传控件做例子 下面是上传控件的一段完整的 js 操作 代码. <!-- 上传缩略图控件配置 --><script> // 定义这四个全局变量是 为了保存4张图片的uuid 在回调函数中每次保存 都覆盖前一张的名字 实现 用户可以重复添加取最终的结果保存入库 window.Picture1=""; //轮播图1的全局变量 window.Picture2=""; //轮播图2的全局变量 window.Pic

Unity 之 C# 利用回调函数实现C++匿名函数

做C++开发的都用过匿名函数非常好用,但是C#开发怎么实现呢?前几天做一个拍照功能的时候,我偶然发现某个函数如果是C++的话,用匿名函数太好了,于是开始研究C#的回调,代理,委托等,最后总算是实现了我想要的吧,不知道到底算什么调用.有大神的话可以给出评价. 参考文章: 详解C#委托,事件与回调函数Unity3D研究院之利用C#实现代理模式(四十) 直接上代码吧,不废话了.A类是委托的定义类,B类是调用委托(匿名函数)的类. using UnityEngine; using System.Coll

详解JavaScript中的replace()函数

Javascript中字符串对象有一个方法replace(),它的作用非常强大.这里把它的用法整理一下.  一.方法简介 该方法的签名是:replace([RegExp|String],[String|Function]). 该方法 返回一个新的字符串,但并不改变字符串本身. 该方法接收2个参数,第一个参数可以是字符串,也可以是一个正则表达式:第二个参数可以是一个字符串,也可以是一个函数.其中第2个参数如果是函数,那么用起来是十分强大而且灵活的,不过相对来说也比较难掌握.下面就其用法进行详细说明

AJAX 回调函数刷新页面问题

AJAX 回调函数执行完成后,刷新页面window.location.reload()执行无效: 实现方式 1.获取当前页面链接 var route = window.location.href 2.执行完成后 通过replace重定向到当前页面 $.ajax({ url: 'XXX.php', type: 'post', data: { "action": 'XXX', }, success: function(data) { if (JSON.parse(data).success

嵌入式&amp;iOS:回调函数(C)与block(OC)传 参/函数 对比

C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call