这个目前使用的正则表达式[:]\s(\".*\")|\d+
可以提取到双引号中内容和数字,但无法提取单引号包括的value和纯字符的value。json示例
我只想说,如果有单引号,那就不是 JSON。参阅:https://www.json.org/。另外,如果想兼容一些特殊的约定,比如单引号民,纯字符什么的,既然不是标准 JSON,当然不能用现成的工具。用正则表达式算是一种取巧的方式,但不能解决所有问题。要想覆盖全面一点,就需要写真正的语法分析器。
比如说,用 ['\"]
代替 \"
就可以解决单/双引号的问题,但是解决不了引号匹配,更解决不了引号嵌套。
如果是标准 JSON,就不用自己去解析这么麻烦了,在 JS 里直接用 JSON.parse()
不是很方便?如果是其他语言一般也会有相应的 JSON 序列化库,比如 .NET 的 Newtonsoft Json.NET,Java 的 Gson,Jackson 等
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
(?<=:\s?)(\d+|\"[^\"]*\"|true|false|null)
(?<=:)
匹配以:
开头,但是不包含:
的字符(?<=:\s?)
匹配以:
开头,并且后面可能有空白符,但是不包含:
和空白符的字符\"[^\"]*\"
匹配一个对称"
字符及其中的内容这里没有匹配数组和对象,数组和对象可以自行嵌套,没想到怎么写
修改
\d
->\d+