开发者社区> 问答> 正文

如何写这样一个过滤字符串的正则?

57< img src="/dev-build/5c1800f8cea587969777d0e2a11ec895.png" class="face-pic" data-labface="4">fd< img src="/dev-build/1157a424588a6732a95ac1d622e129d0.png" class="face-pic" data-labface="17">12< img src="/dev-build/bc2e80fa39a2f7d95737fdbec02c0b27.png" class="face-pic" data-labface="21">比比

这里有这样一个字符串,我想取出文字内容和图片上面的data-labface的属性,按照顺序组成一个数组,

这是一段,用户自行输入的文本内容。

展开
收起
a123456678 2016-07-14 11:09:37 1710 0
1 条回答
写回答
取消 提交回答
  • var srcStr = '57< img src="/dev-build/5c1800f8cea587969777d0e2a11ec895.png" class="face-pic" data-labface="4">fd< img src="/dev-build/1157a424588a6732a95ac1d622e129d0.png" class="face-pic" data-labface="17">12< img src="/dev-build/bc2e80fa39a2f7d95737fdbec02c0b27.png" class="face-pic" data-labface="21">比比'
        // "<"和"img"之间有个空格, 这不是合法的html.
        .replace(/< img/g, '<img')
    // 解析为dom
    ,domParser = new DOMParser()
    ,doc = domParser.parseFromString(srcStr, 'text/html')
    ,nodes = Array.prototype.slice.call(doc.body.childNodes)
    // 过滤只取文本和img节点, 然后取出文本内容和img的data-labface属性
    ,resArr = nodes.filter(function(node) {
        return node.nodeType==3 || node.tagName=='IMG'
    }).map(function(node) {
        return node.nodeType==3 ? node.nodeValue : node.getAttribute('data-labface')
    })
    console.log(resArr)
    2019-07-17 19:56:08
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载