修剪空白和&;nbsp;来自javascript字符串

修剪空白和&;nbsp;来自javascript字符串,javascript,Javascript,我正在尝试修剪字符串中的所有空白,包括 我似乎无法做到这一点 我试过的例子是: var txt = '&nbsp; &nbsp; hallo<span>&nbsp;again</span> &nbsp; &nbsp &nbsp;'; txt = txt.replace(/(?:^(?:&nbsp;)+)|(?:(?:&nbsp;)+$)/ig,''); txt = txt.trim(); console

我正在尝试修剪字符串中的所有空白,包括
我似乎无法做到这一点

我试过的例子是:

var txt = '&nbsp;  &nbsp;  hallo<span>&nbsp;again</span> &nbsp; &nbsp &nbsp;';
txt = txt.replace(/(?:^(?:&nbsp;)+)|(?:(?:&nbsp;)+$)/ig,'');
txt = txt.trim(); 
console.log(txt);//should only display 'hallo<span>&nbsp;again</span>'
var txt='hallo reach ';
txt=txt.replace(/(?:^(?)+)|(?:(?:)+$)/ig,);
txt=txt.trim();
console.log(txt)//应该只显示“再见”

基本上,我只希望字符串的输出再次是
hallo

您可以将
转换为硬空格(U+00A0),然后修剪:

var txt='hallo reach ';
txt=txt。替换(/nbsp(?;?)/ig,“\u00A0”);
txt=txt.trim();

log(““+txt+”)//应该只显示“hallo”
您可以创建一个元素,比如说,
textarea
并在那里赋值,以便对特殊字符进行解码,然后对该值使用
trim()

var txt='hallo reach ';
var elem=document.createElement(“textarea”);
elem.innerHTML=txt;
var txtValue=元素值;
txt=txtValue.trim();
console.log(txt)
这样就可以了,但是由于输入文本后面包含一个没有分号的
,因此输出是
“你好”


对于输入
'hallo'
来说,输出将是
hallo

知道我来晚了,下面是我的贡献

使用了,并将它们全部替换为空字符串
“”

工作原理:

(?:| |\s+)

  • ?:
    非捕获组,不匹配组中的所有内容
    ()
  • ||\s+
  • \s+
    匹配无限数量的空白

let regex=/(?:| | |\s+)/gm;
//让str=`hallo `;
让str=`hallo再次`;

console.log(str.replace(regex)(“”)你好,谢谢你的评论;我在编辑我的原创文章,所以要说得更清楚一点。我很抱歉,这些重叠了。基本上我不想要一个完整的搜索/replace@user2022678-这就是上面的代码所做的,尽管使用了硬空间字符(U+00A0)而不是命名字符实体。但是命名实体只是编码硬字符,所以…嗨;谢谢你的意见。是否有办法在标签中保留标签?它似乎变成了白色PCAE(我使用FF进行测试)@T.J.Crowder哦,是的。我的错。没有jQuery。@user2022678很乐意帮忙我注意到span中的“”实际上已转换为空白。有没有办法保存这些信息?虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。谢谢,我将尽我最大的努力。
var txt = '&nbsp;  &nbsp;  hallo &nbsp; &nbsp &nbsp;';
txt = txt.replace(/^(?:&nbsp;|\s)+|(?:&nbsp;|\s)+$/ig,'');
console.log(txt);//should only display 'hallo'
    var txt = '&nbsp;  &nbsp;  hallo &nbsp; &nbsp; &nbsp;';
    var reg = new RegExp("&nbsp;", "g"); // By RegExp constructor creating regular expression object for matching text with a pattern. and "g" is used from global i.e. apply on every match.
    var result = txt.replace(reg, " ");
    console.log(result.trim());

//2nd Method
var txt = '&nbsp;  &nbsp;  hallo &nbsp; &nbsp; &nbsp;';
var reg = new RegExp("[&nbsp; |' ']", "g"); 
var result = txt.replace(reg, "");
console.log(result);