我正在尝试验证并传递有效的JSON以存储在数据库中。我还允许用户复制元数据。不幸的是,下面的操作失败了,我想知道如何在不从其他键值对中删除空格的情况下,仅剥离有效的URL。

无效的示例:

{ "hello" : "http : //google.com" }


有效的例子:

var metaDataContent = {"hello":"http://google.com"}
var metaDataContent =  {"typeId":5,"mainEventId":301049,"meetingId":54,"title":"Hour of Power"}


我已经尝试过metaDataContent.replace(RegExp(" ", "g"), "");,它将正确地剥离第一个示例并很好地存储在数据库中,但是不幸的是,还将删除"title":"HourofPower"中的间距

任何改进正则表达式的帮助将不胜感激!

最佳答案

我不确定哪种数据包含metaDataContent,但是假设它是JSON格式的字符串,则可以将该字符串转换为对象,然后遍历其属性。如果属性值以字符串“ http”开头,请执行替换:

var obj = JSON.parse(metaDataContent);
for (var p in obj) {
  if (obj[p].indexOf('http') === 0){
    obj[p] = obj[p].replace(/ /g, "");
  }
}

metaDataContent = JSON.stringify(obj);

10-04 23:11