如何用正则表达式去掉html标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用正则表达式去掉html标签相关的知识,希望对你有一定的参考价值。

参考技术A 使用正则表达式去掉html标签的方法常用的正则表达式是:/<[^<]+?>/g
1、定义含有html标签的字符串:
$text
=
'<p>Test
paragraph.</p><!--
Comment
-->
<a
href="#fragment">Other
text</a>';
2、定义正则表达式并替换
$val
=
preg_replace('/<[^<]+?>/g',
'
',
$row_get_Business['business_description']);
3、截取指定长度
$businessDesc
=
substr(val,0,110);

实例JS 正则表达式提取 html 中纯文本,去掉样式,其它标签

背景

最近遇到需要处理富文本粘贴过滤的问题,想着最近也学习了正则表达式,拿着练练手,下面代码还有需要优化的点,但是觉得对于粘贴过滤基本上 80% 可以用吧。

贴一下代码:

实现代码

const getParseText = (html: any) => 
    const reg = new RegExp('<.+?>', 'g');
    const msg = html.replace(reg, '');
    return msg;
;

// 主函数
const handlePasteText = (html: any) => 
    const reg = new RegExp('<.+?>(.*?)</.+?>', 'g');
    const msg = html.replace(reg, (all: any, content: any) => 
        const text = getParseText(content);
        return `<p>$text</p>`;
    );
    return msg;
;

仅做参考,应该还有未处理到的点,对于网页文字基本粘贴过滤应该是可以的。

欢迎交流

======== 2021/12/28 晚更新============
又有新的考虑点了,更新一下代码:

const getParseText = (html: any) => 
    const reg = new RegExp('<(.+?)>(.*?)</.+?>', 'g');
    let flag = false;
    const msg = html.replace(reg, (all: any, tag: any, content: any) => 
        if (tag === 'strong') 
            return content;
         else 
            const res = content.replace(new RegExp('<.+?>', 'g'), '');
            flag = true;
            return `<p>$res</p>`;
        
    );
    if (flag) 
        return msg;
     else 
        const res = msg.replace(new RegExp('<.+?>', 'g'), '');
        return res;
    
;
// 主函数
const handlePasteText = (html: any) => 
    const reg = new RegExp('<.+?>(.*?)</.+?>', 'g');
    const msg = html.replace(reg, (all: any, content: any) => 
        return getParseText(content);
    );
    const res = msg.replace(new RegExp('<.+?>', 'g'), '<p>');
    return res;
;

以上是关于如何用正则表达式去掉html标签的主要内容,如果未能解决你的问题,请参考以下文章

向各位正则高手请教:java 如何用正则 ,去除html标签之间的空格

java字符串里面如何用正则表达式去掉汉字?

如何用正则表达式把括号连同中括号里的字符去掉

如何用正则表达式匹配除了img标签的所有其他标签 匹配所有html标签我知道: /<[^>]+>/g 关键排除img标签

如何用正则表达式在JS中匹配出相应的拓展名?

IOS使用正则表达式去掉html中的标签元素,获得纯文本