先讲一个需求

// 需要对这段代码图片链接中文进行unicode编码
var str = '<style type="text/css">body{margin:0;padding:0;}</style><p><img src="https://scm-dam.oss-cn-shanghai.aliyuncs.com/sit/baozun/20211115/598631437/详情页1.png">呵呵</p><p><br></p><p><img src="https://scm-dam.oss-cn-shanghai.aliyuncs.com/sit/baozun/20211115/046122201/详情页2.png">嘿嘿</p>'

思路一:利用正则匹配中文字符,利用replace 第二个参数为方法,接收匹配到的值,return 新值进行替换

str = str.replace(/[\u4e00-\u9fa5]+/g, (value) => encodeURI(value))
但这样会匹配到这段字符串里面所有的中文符号,并且转码,我们需要的是图片链接中文进行unicode编码

思路二:先匹配出图片链接,再在匹配到的值里面匹配中文进行编码

str = str.replace(/<img(.*?)">/g, (value) => value.replace(/[\u4e00-\u9fa5]+/g, (zh) => encodeURI(zh)))

总结: 平时用replace第二个参数只考虑到了字符串式的替换,忽略了更强大的功能,支持回调函数,这样一行代码就可以解决任何想要置换的字符,可以说是相当强大!

posted on 2021-11-15 15:58  佑之以航  阅读(122)  评论(0编辑  收藏  举报