首页 > 解决方案 > 在变量中查找文本

问题描述

我有一个包含一堆这样的东西的变量:

\"message\":\"BUY ONE, GET ONE 30% OFF!\",\"messages\":[],\"status\":\"success\",\"success\":true,\"type\":null,\"url\":\"/content/modal/blah\"}],\"proposition65\":null,\

我如何查看这个变量并创建一个等于的新变量/content/modal/blah

这将一直在变化,所以寻找的东西

\"success\":true,\"type\":null,\"url\":\" then slices off and grabs whats next and then slices off \"}],\"proposition65\":null,\

标签: jqueryvariables

解决方案


如评论中所述,处理此问题的最佳方法是使用

var results = JSON.parse(yourString) 然后获取网址 results.urlresults[url]

但是,如果您的数据不能采用 JSON 格式,您也可以使用正则表达式

var str = '\"message\":\"BUY ONE, GET ONE 30% OFF!\",\"messages\":[],\"status\":\"success\",\"success\":true,\"type\":null,\"url\":\"/content/modal/blah\"}],\"proposition65\":null,'

var regex = str.match(/url\":\"(.*(?=\"}))/); 
 // regex will return an array, the url will be in the groupe 1 as groupe 0 is just the string url\":\"
 console.log(regex[1])

我不是正则表达式的专家,但这是我制作的那个是如何工作的

url\":\"      // this gets the string url\":\"
(.*(?=\"}))   // here we capture a group with () then match any characters with .* which are followed by \"}) with (?=\"})

这将返回一个包含两个匹配组的数组,一个包含url\":\"一个包含您想要的字符串,一个包含您想要的字符串,因此您可以通过以下方式访问该数据array[1]

你可以在这里看到工作代码 https://jsfiddle.net/3s61ory2/7/

并在这里玩正则表达式: 正则表达式可视化

调试演示


推荐阅读