美文网首页前端开发那些事儿大前端
正则提取html文本中标签里的内容

正则提取html文本中标签里的内容

作者: 冷r | 来源:发表于2021-03-01 13:57 被阅读0次

将一段html代码转成纯文本

正则:/<[^>]*>|/g

<div class="rich-text-container">111!&nbsp; !!123</div>↵<div class="rich-text-container">!222</div>↵<h1 class="rich-text-container">123</h1>↵<div class="rich-text-container">&nbsp;</div>'.replace(/<[^>]*>|/g, '')

结果:"111!  !!123↵!222↵123↵ "

将一段html代码的纯文本转换成纯文本

正则:/(?<=>)(.|\s)?(?=</?\w+[^<]>)/g

'<div class="rich-text-container">111!&nbsp; !!123</div>↵<div class="rich-text-container">!222</div>↵<h1 class="rich-text-container">123</h1>↵<div class="rich-text-container">&nbsp;</div>'.match(/(?<=>)(.|\s)*?(?=<\/?\w+[^<]*>)/g,'')

结果:["111!  !!123", "↵", "!222", "↵", "123", "↵", " "]

问题:js不支持正则表达式不支持前瞻后顾
解决方法 正则换成 /(?=>)(.|\s)?(?=</?\w+[^<]>)/g

'<div class="rich-text-container">111!&nbsp; !!123</div>↵<div class="rich-text-container">!222</div>↵<h1 class="rich-text-container">123</h1>↵<div class="rich-text-container">&nbsp;</div>'.match( /(?=>)(.|\s)*?(?=<\/?\w+[^<]*>)/g,'')

结果:[">111!  !!123", ">↵", ">!222", ">↵", ">123", ">↵", "> "]
问题:都会带一个>号,map循环slice下就好了

相关文章

网友评论

    本文标题:正则提取html文本中标签里的内容

    本文链接:https://www.haomeiwen.com/subject/xxwhrktx.html