如何使用正则表达式从字符串中删除带有HTML标记的HTML标记的内部文本?

时间:2014-08-11 17:04:29

标签: javascript jquery regex

我的字符串在下面给出,

var str = "The test <del> SString </del> string , The other <del>textt </del> test&nbsp; string, <br/>  show &nbsp; something";

我可以写正则表达式,只删除html标签,模式如下,

pattern = /(<([^>]+)>)/ig 

在Str Variable中,可以有任何html标签,如粗体标签(b),斜体标签(i)等等。

如何在jquery或javascript中编写正则表达式模式,这将删除带有html标记的html标记的内部文本。

实际上结果是,

&#34;测试字符串,另一个测试字符串,显示了某些内容&#34;

4 个答案:

答案 0 :(得分:2)

让它 懒惰

<([^>]+)>.*?<\/\1>|<.*?\/>

这是demo

示例代码:

var re = /<([^>]+)>.*?<\/\1>|<.*?\/>/g;
var str = 'The test <del> SString </del> string , The other <del>textt </del> test&nbsp; string, <br/> show $nbsp; something\n\nThe test string , the other test string , show something';

var result = str.replace(re, '');

修改

注意:上述正则表达式不支持具有属性的标记。

尝试使用以下正则表达式来涵盖标记中包含的所有属性。这是DEMO

<([^( |>)]+)([^>]*)>.*?<\/\1>|<.*?\/>

答案 1 :(得分:1)

这样可行。

var str = "The test <del> SString </del> string , The other <del>textt </del> test&nbsp; string, <br/>  show $nbsp; something";
$a = $('<div>'+str+'</div>');
$a.children().remove()
var whatYouWant = $a.text();

答案 2 :(得分:1)

以下功能会帮助您,

function getChildText(node) {
    var text = "";
    for (var child = node.firstChild; !! child; child = child.nextSibling) {
        if (child.nodeType === 3) {
            text += child.nodeValue;
        }
    }
    return text;
}

Demo

答案 3 :(得分:0)

var str = "The test <del> SString </del> string , The other <del>textt </del> test&nbsp; string, <br/>  show $nbsp; something";

你想要什么

$("<div>"+str+"</div>").text()
//result retun is: "The test  SString  string , The other textt  test  string,   show $nbsp; something"