我的字符串在下面给出,
var str = "The test <del> SString </del> string , The other <del>textt </del> test string, <br/> show something";
我可以写正则表达式,只删除html标签,模式如下,
pattern = /(<([^>]+)>)/ig
在Str Variable中,可以有任何html标签,如粗体标签(b),斜体标签(i)等等。
如何在jquery或javascript中编写正则表达式模式,这将删除带有html标记的html标记的内部文本。
实际上结果是,
&#34;测试字符串,另一个测试字符串,显示了某些内容&#34;
答案 0 :(得分:2)
让它 懒惰
<([^>]+)>.*?<\/\1>|<.*?\/>
这是demo
示例代码:
var re = /<([^>]+)>.*?<\/\1>|<.*?\/>/g;
var str = 'The test <del> SString </del> string , The other <del>textt </del> test 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 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;
}
答案 3 :(得分:0)
var str = "The test <del> SString </del> string , The other <del>textt </del> test string, <br/> show $nbsp; something";
你想要什么
$("<div>"+str+"</div>").text()
//result retun is: "The test SString string , The other textt test string, show $nbsp; something"