嗨大家有没有人知道如何编写一个可以在json字符串中查找令牌的正则表达式?
{"testt":"{ccc}"}
目前正在使用
text.match(/\{([^\}]+)\}/gm)
我需要{ccc}
而不是{"testt":"{ccc}
答案 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的问题。