需要正则表达式才能在标签外找到javascript文本

时间:2015-08-10 07:56:17

标签: javascript html regex

需要正则表达式来查找任何HTML标记之外的文本 像

<tag>Some</tag>Text, you have <tag url="something">Here</tag>

结果:

"Text, you have "

此处,标记可以是未指定的任何HTML标记。正则表达式应忽略文本和返回文本之间的标签和文本,这些文本位于所有标记之外

2 个答案:

答案 0 :(得分:5)

对于html内容解析,最好进行dom解析而不是正则表达式

var string = '<tag>Some</tag>Text, you have <tag url="something">Here</tag>';

var tmp = document.createElement('div');
tmp.innerHTML = string;
var lst = [];
for (var i = 0; i < tmp.childNodes.length; i++) {
  if (tmp.childNodes[i].nodeType == Node.TEXT_NODE) {
    lst.push(tmp.childNodes[i].nodeValue);//use trim if needed
  }
}

var text = lst.join('');
snippet.log(text)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

答案 1 :(得分:2)

只需删除所有标记。

var s = '<tag>Some</tag>Text, you have <tag url="something">Here</tag>';
alert(s.replace(/<(\w+)\b[^<>]*>[\s\S]*?<\/\1>/g, ''))

DEMO