在json中获取令牌的正则表达式

时间:2014-05-13 16:22:45

标签: javascript regex string coffeescript pattern-matching

嗨大家有没有人知道如何编写一个可以在json字符串中查找令牌的正则表达式?

{"testt":"{ccc}"}

目前正在使用

text.match(/\{([^\}]+)\}/gm)

我需要{ccc}而不是{"testt":"{ccc}

2 个答案:

答案 0 :(得分:2)

IT似乎是您要查找的令牌在引号中的属性中。最好先JSON.parse,然后查看属性并查看它们是否与表达式匹配,但您可以使用以下内容搜索原始JSON:

text.match(/"\{([^\}]+)\}"/gm)

这假定令牌以"{开头,以}"结尾。您可能还想尝试:

text.match(/"\s*\{\s*([^\}]+)\s*\}\s*"/gm)

答案 1 :(得分:0)

根据令牌的位置,您可以以不同的方式接近它。如果您的令牌始终在引号中,则可以包含这些令牌。问题实际上归结为因为the way the JSON format operates而使用JSON非常棘手。如果它总是在json的值部分,你可能会逃脱。

(?::)"?\{([^\}]+)\}

然而,您很可能需要一个更明确的白色标签列表,而不仅仅是大括号。

我注意到了第一个答案,然后发布了这个。如果标记在引号之外,它们将遇到解析器试图将{tag}解析为JSON的问题。