js replace正则匹配替换多个不同字符串的实现方法
在实际项目开发中,经常会遇到需要替换字符串的情况,简单的使用replace替换指定的一种字符串相信处理起来基本都没啥问题,但遇到一些比较复杂的替换字符串的场景如:需要替换多个不同的字符串,每次正则匹配出来后都要替换成不同的字符串,处理起来实现思路可能就会有些困惑!
实战应用场景:
拿到一后端转义过的字符串,需要将该字符串转换成JSON格式再做后续的业务处理,该字符串格式结构如下:
{"app_params":"{ \"aid\": 6666 }"}
试错做法:
var str = '{"app_params":"{ \"aid\": 6666 }"}';
var strToJson=JSON.parse(str);
console.log(strToJson);
然后就看到了最不想看到的红色报错:
VM86:1 Uncaught SyntaxError: Unexpected token a in JSON at position 18 at JSON.parse ()
大致意思是说遇到非预期的语法错误:意外的标记,导致JSON.parse执行失败,直白点说就是提供的字符串不符合标准的JSON格式,无法按预期转换为JSON输出。
分析下字符串:
\" 该转义字符串会自动替换输出",即原始字符串实际是这样的:
{"app_params":"{ "aid": 6666 }"}
单击展开代码,方便阅读
要能正常转换成JSON,在转换前必须将字符串替换处理为:
{"app_params":{ "aid": 9442 }}
单击展开代码,方便阅读
即需要替换2种字符:"{=>{ 和 }"=>},实现代码如下:
var str='{"app_params":"{ \"aid\": 6666 }"}';
str = str.replace(/"\{/g, '{');
str = str.replace(/"\}/g, '}');
console.log(`替换后字符串:${str}`);
strToJson = JSON.parse(str);
console.dir(`转JSON后: ${strToJson}`);
多次调用replace正则替换看上去没啥毛病,但若遇到需要替换更多个不同字符串的时候,随着使用replace个数的添加,你会觉得这样的代码显得累赘,不够优雅,不够“高大上”!!
强迫症都出来了,不能忍!!!
replace同时正则匹配替换多个不同字符串,改造后的写法:
var str = '{"app_params":"{ \"aid\": 6666 }"}';
console.log(`原始字符串:${str}`);
str = str.replace(/("\{|"\})/gi, function (matchStr, p1) {
console.log(`当前匹配到的子字符串:${p1}`)
// 将正则匹配到的子字符串作为索引key,返回对象字面量value(该value为要替换后的字符串)
return {
'"{': '{',
'"}': '}',
}[p1] //
})
console.log(`替换后字符串:${str}`);
strToJson = JSON.parse(str);
console.dir(`转JSON后: ${strToJson}`);
注意看注释,有没一种豁然开朗的感觉!
js replace正则匹配替换多个不同字符串的实现方法相关推荐
- js正则匹配替换,一对闭合html标签
let str = `<div><h1>正则测试</h1><p class=""><style>.icon{width: ...
- html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签
js 如何正则匹配没有内容的空标签并移除掉? 例如 等等 正则 /]*?)?>\s*?/ig html=' '+ '\n '+ '\n'+ '\n '+ '\n '+ '\n '+ '\n'+ ...
- 正则匹配数字和字母php,用php与js实现正则匹配数字和字母组合的密码
这次给大家带来用php与js实现正则匹配数字和字母组合的密码,用php与js实现正则匹配数字和字母组合密码的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了正则匹配密码只能是数字和字母 ...
- JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式
JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式 .match(/{[^}{]*?}/g)
- 使用Python 正则匹配两个特定字符之间的字符方法
string = "<KeysViewHDF5 ['Inoisy']>" import redef cut_out(a,b,string):result = re.fi ...
- php正则判断数字和英文,PHP正则匹配中英文、数字及下划线的方法【用户名验证】...
本文实例讲述了PHP正则匹配中英文.数字及下划线的方法.分享给大家供大家参考,具体如下: 一.问题: 对于用户注册时的用户名要求由中英文.数字或下划线组成,不得含有其他字符. 二.解决方法: 针对输入 ...
- php 正则匹配是否存在字符,php正则匹配不包含某个字符有什么实现方法
php正则匹配不包含某个字符有什么实现方法 发布时间:2020-08-10 10:34:58 来源:亿速云 阅读:75 作者:Leah 这期内容当中小编将会给大家带来有关php正则匹配不包含某个字符有 ...
- JS_js正则匹配替换冒号,RegExp 对象
RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. var patt=new RegExp(pattern,modifi ...
- php正则匹配标点符号,js实现正则匹配中文标点符号的方法
本文实例讲述了js正则匹配中文标点符号的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: js正则匹配中文标点符号 function checkText() { var te ...
最新文章
- HarmonyOS UI开发 match_parent与match_content
- C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?
- [HAOI2018]染色
- linux6.5安装打印机,如何在CentOS 6.5下安装Win7下的共享打印机服务
- 程序员面试金典适合java么,【程序员面试金典】面试题 01.03. URL化(示例代码)
- '固定' table宽度,走起!
- 怎么在前台取的ViewBag中的值
- Cowrie蜜罐的部署(ubt亲测)
- ireport怎么生成jasper文件
- JSADS-日志对象MyLogger
- Qt5.12 安装教程windows
- 杭州互联网公司和生活成本
- 火狐浏览器的一些插件
- 一个由“2020年1月7日 京东出现的重大 Bug 漏洞“引起的思考......
- Mybatis事务隔离级别
- 面对互联网寒冬裁员潮,HR都在干什么?
- DIY 手动制作自己的win pe
- 添加metadata到tflite模型
- wordpress的excerpt()函数
- python redis连接_Python连接Redis连接配置
热门文章
- web前端学习(十八)——CSS3表格属性(table)的相关设置
- python爬虫爬取商城男装信息
- 打散线条lisp_cad打散多重插入块的方法
- 【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件
- iphone表白小技巧计算机,自言 - 毕业表白,用这个神器最合适了 - iPhone应用 - iPad - 【最美应用】...
- 计算机图形技术与CAD,《计算机图形学与CAD技术》考试参考资料.docx
- # 22.Flink-高级特性-新特性-异步IO\原理
- 【BCT_RFC6762】 多播DNS
- 家用洗地机哪个好用?家用洗地机分享
- 计算机论文校外指导教师意见,毕业论文开题报告指导教师意见参考(通用5篇)...