【问题标题】:How to filter out HTML tags from array and replace with nothing? [duplicate]如何从数组中过滤掉 HTML 标签并替换为空? [复制]
【发布时间】:2018-02-16 12:13:30
【问题描述】:

我有一个数组,它通过 API fetch 在浏览器中输出 JSON,所以我有一个像这样的 obj:

locationArray =  dataArray.map(function(item){
                    return {
                    id: item.Id,
                    location: item.Location,
                    address: item.Address
                    };   
                 });

您能否根据标签进行过滤并在地址字段中替换标签(即没有空格,只需删除):

Tom<br>chased Jerry 将变为 Tom chased Jerry

我正在尝试这个:

  var tags = ["<br>"];
    for(var i=0;i<locationArray.length;i++){
      if(locationArray[i].address === tags){
         locationArray[i].address = "";
      }
    }

在浏览器中,输出地址字段有 HTML 标签,如 &lt;div&gt;&lt;br&gt; 等等,但我想删除这些标签,我该怎么做?我认为我当前的示例将删除所有字符串,而不仅仅是删除标签。

最好删除所有 HTML 或 XML 标记。

这也可以通过 ES6 语法或 jQuery 来完成吗?

注意: 另外要添加的是来自 SharePoint API,因此浏览器中返回的数据如下所示:

【问题讨论】:

  • 你在 locationArray[i].address 中得到什么值?
  • 我找回了正确的地址字符串,但也包含了我试图删除的 HTML 标记和 ASCII 字符,并且只有一个可读的地址。
  • 我已将有关实际结果的新信息添加到 OP。

标签: javascript jquery html ecmascript-6


【解决方案1】:

使用正则表达式过滤掉任何html标签

var regex = /(<([^>]+)>)/ig;
for(var i=0;i<locationArray.length;i++){
     locationArray[i].address = locationArray[i].address.replace(regex, "");
  }
}

【讨论】:

  • 我已将有关实际结果的新信息添加到 OP。
  • 它不起作用
  • 谢谢!这是工作!尽管在其他帖子中人们害怕正则表达式,但这是最佳做法吗??
  • 地址字符串太短影响性能
  • 这是关于图像破坏和脚本注入等安全问题...
猜你喜欢
  • 2016-03-18
  • 2010-09-07
  • 2016-12-24
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2017-06-19
相关资源
最近更新 更多