|
|
1
164
是的,可以进行完整的regex验证。大多数现代的regex实现都允许递归regexpressions,它可以验证完整的JSON序列化结构。这个 json.org specification 非常简单。
它在PHP中与 PCRE functions . 应该在Perl中不做任何修改;当然可以适应其他语言。它也成功了 JSON test cases 。 更简单的RFC4627验证更简单的方法是最小一致性检查,如 RFC4627, section 6 . 但是,它只是作为安全测试和基本的非有效性预防措施:
|
|
|
2
26
是的,普遍的误解是正则表达式只能匹配 regular languages . 事实上, PCRE函数可以比常规语言更匹配 ,它们甚至可以匹配一些非上下文无关的语言! Wikipedia's article on RegExps 有一个特别的部分。
JSON可以通过多种方式使用PCRE识别!
@Mario展示了一个使用命名子模式和
back-references
. 然后他指出,应该有一个解决方案使用
recursive patterns
我在用
无论如何,这应该被视为“技术示范”,而不是实际的解决方案。在PHP中,我将通过调用
|
|
|
3
13
因为JSON的递归性质(嵌套
* 但是要小心,很多regex实现都是这样的 不 支持递归模式。在流行的编程语言中,这些语言支持递归模式:perl、.net、php和ruby 1.9.2 |
|
|
4
7
我试过@Mario的答案,但它对我不起作用,因为我已经从json.org下载了测试套件。( archive )测试失败4次(fail1.json,fail18.json,fail25.json,fail27.json)。
我已经调查了错误并发现
所以剩下两个文件:
和
两者都包含无效字符。所以我像这样更新了模式(更新了字符串子模式):
所以现在所有的法律测试 json.org 可以通过。 |
|
|
5
3
我创建了一个Mario解决方案的Ruby实现,它可以工作:
|
|
|
6
1
对于“字符串和数字”,我认为数字的部分正则表达式:
应改为:
因为数字的小数部分是可选的,而且从
|
|
|
7
1
JSON数组中的尾随逗号导致了我的Perl5.16挂起,可能是因为它保持了回溯。我不得不添加一个回溯终止指令:
这样,一旦它标识了一个不是“可选”的构造(
|
|
8
1
查看文档 JSON 如果目标仅仅是检查身体状况,那么regex似乎可以简单地分为三个部分:
总之:
如果json字符串包含
|
|
|
9
0
如上所述,如果您使用的语言附带了一个JSON库,请使用它尝试对字符串进行解码,并在失败时捕获异常/错误!如果语言没有(只是使用freemaker的情况),那么下面的regex至少可以提供一些非常基本的验证(它是为php/pcre编写的,以供更多用户测试/使用)。这并不像公认的解决方案那么简单,但也不是那么可怕。
简短说明:
如果我错过了一些会无意中打破这一点的东西,我很感谢您的评论! |
|
|
10
-1
这里是验证字符串的regexp:
写的是美国 original syntax diagramm . |
|
|
11
-4
我知道这是6年前的事了。然而,我认为有一个解决方案,这里没有人提到,这比重新存在要容易得多。
|
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
user24242514 · 将嵌套查询字符串请求转换为字典 1 年前 |
|
|
Shane Harley · 通过这些JSON元素进行映射 1 年前 |
|
|
Shane Harley · 将HTML作为JSON字符串的一部分? 1 年前 |
|
|
Matt Miles · 如何将嵌套的JSON转换为数据帧? 1 年前 |