我有一个JSON返回:
{
"status": 1,
"message": "1",
"data": {
"file": "1.png"
},
"html": "",
"redirect_to": ""
}
<divid="UMS_TOOLTIP"style="position: absolute; cursor: pointer; z-index: 2147483647; background: transparent; top: -100000px; left: -100000px;"></div>
我想清理,只返回内容
{"status":1,"message":"1","data":{"file":"1.png"},"html":"","redirect_to":""}
我尝试了\{\{([^}]*)\}\}
,但在我的测试中似乎不起作用。
我在做什么错了?
答案 0 :(得分:3)
您可以尝试通过以下方式创建组:
{
开头.*
}
结尾(?!})
注意:如果您有许多带有标记的字符串化对象,则此方法将无法正常工作。例如。 {...}<div>...</div>{...}
在这种情况下,这将失败。
var regex = /({.*}(?!}))/;
var str = '{"status":1,"message":"1","data":{"file":"1.png"},"html":"","redirect_to":""}<div id="UMS_TOOLTIP" style="position: absolute; cursor: pointer; z-index: 2147483647; background: transparent; top: -100000px; left: -100000px;"></div>';
console.log(str.match(regex)[0])
答案 1 :(得分:2)
一种选择是使用XRegExp
递归匹配嵌套的{
和}
,直到它们平衡:
const input = `{"status":1,"message":"1","data":{"file":"1.png"},"html":"","redirect_to":""}<div id="UMS_TOOLTIP" style="position: absolute; cursor: pointer; z-index: 2147483647; background: transparent; top: -100000px; left: -100000px;"></div>`;
const json = '{' + XRegExp.matchRecursive(input, '{', '}') + '}';
// second parameter is the left recursive delimiter
// third parameter is the right recursive delimiter
console.log(JSON.parse(json));
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
答案 2 :(得分:1)
导致问题(因为不是JSON)的不必要的附加<div id="UMS_TOOLTIP" ...>
可能 与您的代码无关。
我们的一位客户经历了此事,并确认他们正在运行趋势科技防病毒安全软件,该软件与针对同一问题的类似报告保持一致:
答案 3 :(得分:0)
假设您的JSON返回以下内容:
{
"status":1,
"message":"1",
"data":{"file":"1.png"},
"html":"",
"redirect_to":""
}
<div id="UMS_TOOLTIP" style="position: absolute; cursor: pointer; z-index: 2147483647;
background: transparent; top: -100000px; left: -100000px;"></div>
每个人都给出了非常有见地的答案。但是,如果这不是您程序中非常重要的步骤,则可能要实现以下目的:
var result = `{"status":1,"message":"1","data":{"file":"1.png"},"html":"","redirect_to":""}<div id="UMS_TOOLTIP" style="position: absolute; cursor: pointer; z-index: 2147483647; background: transparent; top: -100000px; left: -100000px;"></div>`;
var retur = result.match('<');
console.log(result.slice(0, retur.index));
要使您的日志为:
{
"status":1,
"message":"1",
"data":{"file":"1.png"},
"html":"",
"redirect_to":""
}
PS:这不是推荐的补丁,只是完成工作的一种简单方法。