匹配第一个和最后一个引号之间的字符串

时间:2011-08-31 22:52:45

标签: javascript regex

我有一个包含JSON对象的字符串。问题是由于某种原因正在返回对象:

string (4345) "{ "blabla" : { "bleble" : "bloblo" } ...}"

我需要基本提取第一个和最后一个引号之间的所有内容,以便我可以解码该对象。

我在javascript中试过这个:

var myVar = myString.match(/\".+$\"/);

但它不起作用。什么是适合我的问题的RegEx?

4 个答案:

答案 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];