JS - 正则替换富文本内容的所有图片地址,并提取src、alt、style等属性

简介: 这篇文章提供了使用JavaScript正则表达式来替换富文本中所有图片地址,并提取`src`、`alt`、`style`等属性的示例代码和方法。

前言

偶尔会有遇到这些需求就是,修改富文本的图片地址,在此简单记录一下。

一、示例代码

(1)index.html

<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
</head>
<body>
    <h1>JS正则替换富文本内容的所有图片地址,并提取src、alt、style等属性</h1>
</body>
<script type="text/javascript">
    // URL前缀
    let urlPrefix = 'v1/abcd?filePath='

    // 处理前HTML内容
    let beforeHtml = '<p>你好世界<img src="blob:http://xxxxxxxxx:8888/be990a356" alt="AAA.png" data-href="" style="width: calc(100% - 100px)"/><img src="blob:http://xxxxxxxxx:8888/11111111111" alt="BBB.png" data-href="" style=""/></p>'
    console.log('beforeHtml =>', beforeHtml)

    // 处理后HTML内容
    let afterHtml = ''

    // 加工
    if (beforeHtml.indexOf('<img') != -1) {
    
        afterHtml = beforeHtml.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (img, src) {
    
            console.log('img =>', img) // <img src="blob:http://xxxxxxxxx:8888/be990a356" alt="AAA.png" data-href="" style=""/>
            console.log('src =>', src) // blob:http://xxxxxxxxx:8888/be990a356

            // 提取 alt
            // const reg = /alt\s*=\s*([^\s]+)/i
            // const reg = /alt=(["']+)([\s\S]*?)(\1)/i
            const reg = /alt\s*=\s*[\'\"]?(.*?)[\'\"][^>]/si
            const alt = reg.exec(img)
            console.log('alt =>', alt)
            // [
            //   'alt=\"AAA.png\" ',
            //   'AAA.png'
            // ]

            // 提取 style
            const styleReg = /style\s*=\s*[\'\"]?(.*?)[\'\"][^>]/si
            const style = styleReg.exec(img)
            console.log('style =>', style)

            console.log('\n')
            return '<img src=\"' + urlPrefix + alt[1] +'\" style=\"' + style[1] + '\" />' // <img src=v1/downLoadFile?filePath="AAA.png"/>
        })
    }

    console.log('afterHtml =>', afterHtml)// <p>你好世界<img src="v1/downLoadFile?filePath=AAA.png"/><img src="v1/downLoadFile?filePath=BBB.png"/></p>
</script>
</html>

二、运行效果

(1)见打印输出。

目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
监控 JavaScript 前端开发
确定使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript
【10月更文挑战第24天】选择使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript 是一个需要综合考虑多个因素的决策。需要根据脚本之间的依赖关系、页面加载性能要求、脚本的功能和重要性等因素来进行权衡。在实际应用中,需要通过测试和验证来确定最适合的加载方式,以提供更好的用户体验和页面性能。
|
1月前
|
监控 JavaScript 前端开发
使用 `defer` 属性异步加载 JavaScript
【10月更文挑战第24天】使用 `defer` 属性异步加载 JavaScript 是一种有效的提高页面性能和用户体验的方法。通过合理设置 `defer` 属性,可以在不影响页面渲染的情况下异步加载脚本,并确保脚本的执行顺序。在实际应用中,需要根据具体情况选择合适的加载方式,并注意处理可能出现的问题,以确保页面能够正常加载和执行。
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
83 4
|
2月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
29 1
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-枚举对象中的属性
关于JavaScript基础知识中如何枚举对象属性的介绍。
33 1
JavaScript基础知识-枚举对象中的属性
|
2月前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
23 0
|
2月前
|
缓存 JavaScript 前端开发
深入理解Vue.js中的计算属性与侦听属性
【10月更文挑战第5天】深入理解Vue.js中的计算属性与侦听属性
36 0
|
2月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器:深入理解与实践
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器:深入理解与实践
25 0
|
3月前
|
存储 JavaScript 前端开发
JS中的数组有哪些常用操作函数和属性
【9月更文挑战第7天】JS中的数组有哪些常用操作函数和属性
23 1