首页 文章

在javascript正则表达式中排除html标记

提问于
浏览
0

我有一个javascript正则表达式的问题我试图获取字符串文本中的所有单词但我需要排除html标签..

我的正则表达式\ \ b([\ S])\ b / g,但例如 <br> 不排除..

这里的一个例子https://regex101.com/r/oT9uC1/4

大家好

2 回答

  • 0

    我会尝试在html标签上进行正则表达式替换,而不是尝试查找所有文本 .

    所以使用这样的东西:

    var str = "Non ! Non ! Je ne veux pas d'un éléphant!<br> dans un boa. Un boa c'est très dangereux, et un éléphant c'est très encombrant. Chez moi c'est tout petit. J'ai besoin d'un mouton. Dessine-moi un mouton.";
    var res = str.replace(/<.+>/g, "");
    

    您显然可以专门检查br标记并替换换行符 .

    然后,这应该删除所有html标签,而只留下原始文本 .

    另外,最好记住,如果删除了某些内容,则需要确保留下的内容不会留下可运行的代码 .

    看到这个例子:Stripping script tags from HTML input

  • 0

    最简单的方法是先剥离标签,
    然后在newtext上运行你的正则表达式 .

    newtext = text.Replace( /<(?:script(?:\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^>]*?)+)?\s*>[\S\s]*?<\/script\s*|(?:\/?[\w:]+\s*\/?)|(?:[\w:]+\s+(?:(?:(?:"[\S\s]*?")|(?:'[\S\s]*?'))|(?:[^>]*?))+\s*\/?)|\?[\S\s]*?\?|(?:!(?:(?:DOCTYPE[\S\s]*?)|(?:\[CDATA\[[\S\s]*?\]\])|(?:--[\S\s]*?--)|(?:ATTLIST[\S\s]*?)|(?:ENTITY[\S\s]*?)|(?:ELEMENT[\S\s]*?))))>/g, '');
    

    Demo

相关问题