我在JavaScript变量中有一些HTML内容:
var string="<tr> <td> data 1 </td> <td> data 2 </td> <td> data 3 </td></tr>";
我只想删除HTML标记之间的空格。列数据中的空格必须保持不变。
string.replace(/\n/g, "");
string.replace(/[\t ]+\</g, "<");
string.replace(/\>[\t ]+\</g, "><");
string.replace(/\>[\t ]+$/g, ">");
我尝试了上面的代码。但这没有奏效。有人请帮我解决这个问题。
答案 0 :(得分:13)
string= string.replace(/>\s+</g,'><');
答案 1 :(得分:3)
有一个jQuery解决方案:
使用.contents()
和.filter()
查找所有仅限空格的文本节点并删除()它们,如下所示:
var $e = $("<tr> <td> data 1 </td> <td> data 2 </td> <td> data 3 </td></tr>");
$e.contents().filter(function() {
return this.nodeType = Node.TEXT_NODE && /\S/.test(this.nodeValue) === false;
}).remove();
console.log($e.html());
// <td> data 1 </td><td> data 2 </td><td> data 3 </td>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Check console!
以上示例过滤了tr
的子项。但是,也可以检查后代或做出复杂的决定,例如在内联元素之间保留空格,但在块元素之间删除。
答案 2 :(得分:0)
忽略&lt;和&gt;文本节点内的字符:
var string = "<p>lol</p> <p>let's remove <span>spaces between tags</span> </p>";
var rexp = new RegExp(">[\t\s ]*<", "g");
var result = string.replace(rexp, "><");
js fiddle here:http://jsfiddle.net/4cfgnfrx/