如何从给定的html字符串中删除前导和尾随空白?

我有下面的HTML字符串。JavaScript中删除字符串前导和尾随空白的示例代码是什么?

<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Trimming using JavaScript<br />
<br />
<br />
<br />
all leading and trailing white spaces
<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
246906 次浏览
string.replace(/^\s+|\s+$/g, "");

参见String方法trim() - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

var myString = '  bunch    of <br> string data with<p>trailing</p> and leading space   ';
myString = myString.trim();
// or myString = String.trim(myString);

编辑

正如在其他评论中提到的,可以使用正则表达式方法。trim方法实际上只是一个正则表达式的别名:

if(!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g,'');
};
}

... 这将把该方法注入到本地原型中,以帮助那些还在浅水区游泳的浏览器。

var trim = your_string.replace(/^\s+|\s+$/g, '');
var str = "  my awesome string   "
str.trim();

对于旧的浏览器,使用regex

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string"

如果你正在处理一个多行字符串,比如一个代码文件:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>

并替换所有前导行,得到这样的结果:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>

你必须在你的正则表达式中添加multiline标志,^$逐行匹配:

string.replace(/^\s+|\s+$/gm, '');

相关引用从文档:

“m”标志表示多行输入字符串应被视为多行。例如,如果使用"m", "^"和"$"将从仅匹配整个字符串的开头或结尾改为匹配字符串中任何一行的开头或结尾。

我知道这是一个非常古老的问题,但它仍然没有一个公认的答案。我看到你想要删除以下内容:html标签是“空的”和基于html字符串的空白。

我已经提出了一个解决方案,根据你的评论,你正在寻找的输出:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>";
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim()删除开头和结尾的空格

.replace(/&nbsp;/g, '')删除&nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));删除空标签

01)。如果你只需要删除开头和结尾的空白,使用下面的方法:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

返回字符串“No.255 Colombo”

02)。如果你需要移除所有的空白,使用下面的方法:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

返回字符串“No.255Colombo”