js 关于 replace 取值、替换第几个匹配项

这篇具有很好参考价值的文章主要介绍了js 关于 replace 取值、替换第几个匹配项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

〇、前言

在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。

一、替换第一个匹配项

字符串替换

let strtest = "0123测试replace456测试replace789测试replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace("测试","ceshi")
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// 输出字符串:0123ceshireplace456测试replace789测试replace0

正则表达式替换

 当直接在被替换字符串恰后加上 / 时,不添加修饰符,就等同于直接字符串替换。

let strtest = "0123测试replace456测试replace789测试replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/测试/, "ceshi")
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// 输出字符串:0123ceshireplace456测试replace789测试replace0

二、替换全部匹配项

字符串分组再联合

let strtest = '0123测试replace456测试replace789测试replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("测试");
let outstr = arrstr.join("ceshi");
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// 输出字符串:0123ceshireplace456ceshireplace789ceshireplace0

正则表达式替换

 格式:/待替换的字符串/g、/待替换的字符串/mgi。

  g:执行全局匹配,替换全部匹配项;

  i:不区分大小写;

  m:多行匹配。

gim 可所以组合使用。

let strtest = "0123测试replace456测试replace789测试replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/测试/g, "ceshi")
// 另一种写法:
// let reg = new RegExp("测试", "g")
// let outstr = strtest.replace(reg, "ceshi")
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// 输出字符串:0123ceshireplace456ceshireplace789ceshireplace0

三、替换第 n 个匹配项

下边以第二个为例。

字符串分组再联合

思路:先通过被替换项分组,再根据目标位数把整个分组分为两个部分,在通过替换字符串联合。

let num = 2 // 定义替换第二个匹配项
let strtest = '0123测试replace456测试replace789测试replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("测试");
if(arrstr.length < num)
    return
let arrstr1=[],arrstr2=[]
for(let ii=0;ii<arrstr.length;ii++){
    if(ii < num)
        arrstr1.push(arrstr[ii])
    else
        arrstr2.push(arrstr[ii])
}
let outstr = arrstr1.join("测试")+"ceshi"+arrstr2.join("测试");
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// (index):59 输出字符串:0123测试replace456ceshireplace789测试replace0

正则表达式实现

将第一个匹配项跳过,并把第二个匹配项之前的内容标识为变量。

let strtest = '0123测试replace456测试replace789测试replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/((?:.*?测试.*?){1}.*?)测试/m, "$1-ceshi-")
// ?: 表示:其后边的 pattern 匹配但不获取。匹配项被标识为 $1,后续会引用
// .*? 表示:.* 除 '/n' 之外的任意个任意字符
// {1} 表示:其前边的 pattern 出现一次
// /pattern/m 表示: m 全局查询
console.log("输出字符串:" + outstr)

// 原字符串:0123测试replace456测试replace789测试replace0
// 输出字符串:0123测试replace456测试replace789-ceshi-replace0

  参考:https://stackoverflow.com/questions/42943096/replace-nth-match-of-matches-with-regex

四、替换指定标记之间的内容

字符串分组再联合

let strtest = '0123<Object>replace456测试replace78</Object>9测试replace0';
let startstr = "<Object>"
let endstr = "</Object>"
if (strtest.indexOf(startstr) > strtest.indexOf(endstr))
    return
console.log("原字符串:" + strtest)
let arr = strtest.split(startstr)
let arr2 = arr[1].split(endstr)
let resultstr = arr2[0]
let outstr = startstr + resultstr + endstr
console.log("输出字符串:" + outstr)

// 原字符串:0123<Object>replace456测试replace78</Object>9测试replace0
// 输出字符串:<Object>replace456测试replace78</Object>

正则表达式方法 replace()、match()、exec()

替换为指定字符串:( replace() )

let strtest = '0123<Object>replace456测试replace78</Object>9测试replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/<Object>(.*?)<\/Object>/m, "-ceshi-") // \ 为转义字符
console.log("输出字符串:" + outstr)

// 原字符串:0123<Object>replace456测试replace78</Object>9测试replace0
// 输出字符串:0123-ceshi-9测试replace0

取出带标记字符串的内容:( match() )

let strtest = '0123<Object>replace456测试replace78</Object>9测试replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.match(/<Object>(.*?)<\/Object>/m)
console.log("输出字符串:" + outstr)

// 原字符串:0123<Object>replace456测试replace78</Object>9测试replace0
// 输出字符串:<Object>replace456测试replace78</Object>

当可能有多个匹配项时:( exec() )文章来源地址https://www.toymoban.com/news/detail-455847.html

let strtest = "这是<Object>要提取的内容</Object>,还有<Object>另一个内容</Object>"
console.log("原字符串:" + strtest)
let regex = /<Object>(.*?)<\/Object>/gm
const matches = []
let match
while ((match = regex.exec(strtest)) !== null) {
    matches.push(match[1])
    console.log(match)
}
console.log("输出全部匹配项:", matches)

// 原字符串:这是<Object>要提取的内容</Object>,还有<Object>另一个内容</Object>
// (2) ["<Object>要提取的内容</Object>", "要提取的内容", index: 2, input: "这是<Object>要提取的内容</Object>,还有<Object>另一个内容</Object>", groups: undefined]
// (2) ["<Object>另一个内容</Object>", "另一个内容", index: 28, input: "这是<Object>要提取的内容</Object>,还有<Object>另一个内容</Object>", groups: undefined]
// 输出全部匹配项: (2) ["要提取的内容", "另一个内容"]

到了这里,关于js 关于 replace 取值、替换第几个匹配项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP中读取(截取substr)字符串前N个字符或者从第几个字符开始取几个字符

    ```html ?php $str = \\\"123456789\\\";echo substr($str , 0 , 3);//从左边第一位字符起截取3位字符:结果:123echo substr($str , 3 , 3);//从左边第3位字符起截取3位字符:结果:456? ``` ```html ?php$rest = substr(\\\"abcdef\\\", -1);    // 返回 \\\"f\\\"$rest = substr(\\\"abcdef\\\", -2);    // 返回 \\\"ef\\\"$rest = substr(\\\"abcdef\\\", -3, 1); // 返回

    2024年02月20日
    浏览(37)
  • 8090后一年有多少存款才算正常?存款五个等级,你在第几个等级?

    80后是指1980到1989年出生的人,到今年最小的已经33岁,最大的已经是42岁。曾经80后是被称为垮掉的一代人,而今80后成为工作的主力,有的成为富甲一方的企业家。 80后成长很不容易的一代人,80后成长的时间,我国处于快速发展时期,各种不容易都让我们80后赶上。网上说

    2024年02月08日
    浏览(87)
  • eclipse正则表达式替换 Find/Replace

    CTRL+F 打开 Find/Replace 对话框 勾选 Regular expressions ​ 下图中的 Find : /.*/ ​ 换行符: R 下图中的 Find 表达式: R.*@Excel.* ​ /** 替换为 Rt/** ​ 下图中的 Find 表达式: .*private (.*) (.*); 下图中的 Replace with 表达式: t//变量类型$1;变量名$2Rtprivate 1 2; 括号 () 内的分组会被捕

    2024年01月21日
    浏览(39)
  • Python使用replace函数同时替换多个字符串

    用replace函数替换单个的字符或指定的字符串 比如将字符 \\\' a \\\' 替换成 \\\' A \\\'  但如果我想同时替换掉两个或多个字符串呢,直接调用多次就行了 将\\\' a \\\' 替换成 \\\' A \\\' ,同时将\\\' b \\\' 替换成 \\\' B \\\'  但这也有一个缺陷,就是你前面替换后的字符串如果和后面要替换的字符串相同的话(

    2024年02月11日
    浏览(35)
  • Python replace()函数使用详解,Python替换字符串

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 replace() 可以 「替换」 字符串中的内容 语法 参数 old :(必选,字符串类型)被替换的字符串 new :(必选,

    2024年02月16日
    浏览(36)
  • 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

    输入 第一行包含一个整数 n 。 第二行包含 n 个非负整数,为给定的数列,数列中的每个数都不大于 10000 。 第三行包含一个整数 a ,为待查找的数。 输出 如果 a 在数列中出现了,输出它第一次出现的位置(位置从 1 开始编号),否则输出 -1 。 测试说明 样例输入: 6 1 9 4 8 3

    2024年02月04日
    浏览(41)
  • vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    2024年02月11日
    浏览(39)
  • PDF 内容替换器软件工具 PDF Replacer Pro Crack

    PDF 内容替换器软件工具 批量查找和替换 PDF 中的指定文本 PDF Replacer 是一款 Windows 软件程序,可在 PDF 文件中查找指定的单词或短语文本并替换为新文本,并保持 PDF 布局不变。   Windows 7/Win 8/Win 10 或更高版本(32/64 位) PDF Replacer 的 10 个主要功能 用您的新文本替换 PDF 中的文

    2024年02月09日
    浏览(47)
  • window.location.href()/replace()/reload() -- 页面跳转+替换+刷新

    1. window.location.href = \\\'url\\\' ;  改变地址进行跳转 2. window.location.replace(\\\'url\\\') ;  将地址替换成新的url, 该方法通过制定的url替换,当前缓存在历史里(客户端)的项目,因此当使用了replace方法之后,你不能通过 前进 和 后退 , 来访问已经被替换的url, 这个特点对一些过渡页面非常有用! 例

    2024年02月11日
    浏览(32)
  • oracle传入两个参数的的replace函数替换成hive方式

    oracle2个参数的replace转换成hive实现 总结:oracle支持传入2个参数,但是hive支持传入3个参数,那么可以将第三个参数写为空字符串 转义符处理 对于concat函数中加“”分隔符需要使用6转义符

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包