我有一个包含JSON对象的字符串。问题是由于某种原因正在返回对象:
string (4345) "{ "blabla" : { "bleble" : "bloblo" } ...}"
我需要基本提取第一个和最后一个引号之间的所有内容,以便我可以解码该对象。
我在javascript中试过这个:
var myVar = myString.match(/\".+$\"/);
但它不起作用。什么是适合我的问题的RegEx?
答案 0 :(得分:2)
所以你知道(在你的例子中)myString有你的JSONed东西吗?为什么不这样做:
var myVar = myString.substring(1, myString.length - 2);
如果在JSONed之前或之后还有其他垃圾,我猜你可以使用indexOf和lastIndexOf操作。
另请查看此问题: Regex to validate JSON
回应评论中的问题:
//So let's say we have this string
example = '"[ { "title": "event1", "start": "NOW", } ]"'
//So our example string has quote literals around the bits we want
//indexOf gives us the index of the " itself, so we should add one
//to get the character immediately after the "
first_nonquote_character = example.indexOf('"') + 1
//lastIndexOf is fine as is, since substring doesn't include the character
//at the ending index
last_nonquote_character = example.lastIndexOf('"')
//So we can use the substring method of the string object and the
//indices we created to get what we want
string_we_want = example.substring(first_nonquote_character, last_nonquote_character)
//The value in string_we_want is
//[ { "title": "event1", "start": "NOW", } ]
希望有所帮助。顺便说一句,如果你的JSON实际上回来时带有',}]“'并且这不是拼写错误,你可能想要做一个string.replace(/,}]”$ /,'}] “)。
答案 1 :(得分:0)
您只需要获得组子匹配:
/"(.*)"/.exec(myString)[1]
答案 2 :(得分:0)
这个正则表达式对我有用(我用Rubular测试了它):
/"(.+)"/
你可以像这样使用它:
var newString = oldString.replace(/"(.+)"/, "$1");
parens用于捕获引号之间的内容(因为你不想要它们,对吗?)。
答案 3 :(得分:0)
试试这个:
var newstr = oldstr.match(/"(.+)"/)[1];