来源 | https://www.cnblogs.com/class1/p/14273231.html

问题先行,要求搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?截图如下:对于如何替换JS字符串中匹配到多处中某一指定节点?今天我们一起来看看。

字符串的替换,我们首先想到的一个属性是replace:

strObject.replace(reg/substr,replacement)

两个参数,第一个参数,需要替换的值(可以是正则匹配式也可以是字符串),第二个参数,替换成的值。

str ="abcdefabdrdwss";str.replace(/"ab"/g, "xy"); console.log(str)  // xycdefxydrdwss

当我们使用正则表达式,如上,加上g,就是全局匹配,不加就是匹配第一个。但是我就想替换第二处的ab。好像没有直接可用的api。那我们可不可以拿到第二处的下标位置,通过字符串截取拼接的方式实现呢?

顺着这个思路,如何找到第二处的下标位置。

 let str ="abcdefabdrdwss";    const reg = new RegExp(‘ab‘, ‘g‘);    let ret;    const arr=[];    while((ret = reg.exec(str))!==null) {      arr.push({id:ret.index,content:ret.input}) // 通过循环把每次匹配的开始下标都放到arr中    }   console.log(arr) //[{id:0,content:"abcdefabdrdwss"},{id:6,content:"abcdefabdrdwss"}]

每处的下标都收集到了,再看如何替换。

  // 字符串的替换,四个参数,第一个是原始字符串,第二个是替换的开始位置,第三是替换的内容    //第四个参数,这里是替换几位index就加几    const replaceStr = (strs, index, text,len) => {      return strs.substring(0, index) + text + strs.substring(index + len);    }; 

结合上面的内容,可以直接替换第二个"ab"了:

const newVal= replaceStr(str, arr[1].id, ‘xy‘,2);console.log(newVal)  // abcdefxydrdwss

附上完整的js代码示例:

 const str ="这是主体内容,有很多内容,喜欢看这个内容就关注吧";    const reg = new RegExp(‘内容‘, ‘g‘);    let ret;    const arr=[];    while((ret = reg.exec(str))!==null) {      arr.push({id:ret.index,content:ret.input})     }  const replaceStr = (strs, index, text,len) => {      return strs.substring(0, index) + text + strs.substring(index + len);    }; // 替换文本的第三处“内容”为 “文章”const newVal= replaceStr(str, arr[2].id, ‘文章‘,2);console.log(newVal)  // 这是主体内容,有很多内容,喜欢看这个文章就关注吧
本文完~

正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?相关推荐

  1. c替换指定位置字符串_【JavaScript】字符串

    字符串 字符串可以是插入到引号中的任何字符.你可以使用单引号或双引号: var carname = "MI"; 可以使用索引位置来访问字符串中的每个字符: var characte ...

  2. python如何连续查找字符串_在另一个字符串Python中多次查找字符串

    我尝试使用Python的预定义函数(如find和index)查看一个字符串是否存在于另一个字符串中..在 现在我的函数有两个字符串作为参数,一个是我们要搜索的字符串,另一个字符串是我们在第一个字符串中 ...

  3. 递归 反转字符串_使用递归反转字符串

    递归 反转字符串 1.简介 在本文中,您将学习如何使用递归方法来反转字符串. 第一个程序是反转字符串,第二个程序将读取用户的输入. 在之前的文章中,我已经展示了如何不使用任何内置函数来反转字符串,以及 ...

  4. 什么是java字符串_什么是java字符串

    java字符串是string类,Java程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因 ...

  5. java rsa字符串_使用RSA对字符串加密解密

    本文介绍,使用命令行和编程语言(nodejs和java),将字符串用RSA加密和解密. 命令行:openssl 使用Mac,openssl自带了,以下使用步骤在Mac OSX 10.9.2下测试通过. ...

  6. html把字符串转换成数字,js字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  7. awk 内嵌正则 提取字符串_使用awk提取字符串中的数字或字母

    1.提取字符串中的数字 $ echo 'dsFUs34tg*fs5a%8ar%$#@' |awk -F "" ' { for(i=1;i<=NF;i++) { if ($i ...

  8. java json 正则_正则表达式替换json字符串

    是否有一个正则表达式我可以用来查找JSON字符串中的所有数字并用双引号替换它们? 例如,在下面的JSON字符串中,我想用双引号替换Id和Phone值 . String jsonString = &qu ...

  9. java解析字符串_用Java解析字符串有哪些不同的方法?

    用Java解析字符串有哪些不同的方法? 对于解析播放器命令,我最常使用split方法通过定界符对字符串进行分割,然后再通过一系列ifs或switches找出其余部分. Java中解析字符串的几种不同方 ...

最新文章

  1. rm排除某个文件进行删除
  2. 工业用微型计算机笔记(2)-二进制有符号数
  3. 《linux内核设计与实现》第一章
  4. 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
  5. javascript校验2
  6. ajax--跨域问题及三种简单的解决方案
  7. GoogLeNet网络的Pytorch实现
  8. 20191202_k-中心聚类算法和k-mean算法Python实现
  9. 危险!请马上替换代码中的BeanUtils!!!
  10. ELK+filebeat+kafka+zookeeper构建海量日志分析平台
  11. 2020年黑苹果硬件配置推荐
  12. python调用sql数据库进存销_Python如何使用数据库的连接池
  13. egg.js+vue前后端分离项目,后端如何使用set-Cookie为前端设置cookie
  14. Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
  15. LM2586S 应用笔记
  16. AES前端flutter加密与后端java解密pad block corrupted问题
  17. VMware虚拟机鼠标失灵怎么办
  18. 苹果低头了,但不想丢掉它的皇冠
  19. 微信投票软件制作代码
  20. 反射知识点总结《Lipp学习笔记》

热门文章

  1. 百度,淘宝,腾讯三大巨头HTML页面规范分解
  2. MIUI V5的私密短信功能
  3. 开机提示ntldr is missing解决方法
  4. [导入]用ASP.Net(C#)连接Oracle数据库的方法
  5. 页游修改攻击力如何同步服务器,我的世界 怎么修改武器攻击力和属性 像服务器那样!!...
  6. 哈夫曼树编码和译码c语言,C++哈夫曼树编码和译码的实现
  7. 微软自带报ocienvcreate失败_微软推出的免费神器,治好了我的拖延症!
  8. java如何使用promql_Prometheus 常用 PromQL 语句
  9. 彰显城市等级的最典型代表,商业综合体城市PSD海报素材
  10. 平安夜、圣诞节设计素材和灵感|撒糖(PNG免扣素材)