我想使用模式
在xsd中使用regex验证json<xs:simpleType name="json">
<xs:restriction base="xs:string">
<xs:pattern value='/\A("([^"\\]*|\\["\\bfnrt\/]|\\u[0-9a-f]{4})*"|-?(?=[1-9]|0(?!\d))\d+(\.\d+)?([eE][+-]?\d+)?|true|false|null|\[(?:(?1)(?:,(?1))*)?\s*\]|\{(?:\s*"([^"\\]*|\\["\\bfnrt\/]|\\u[0-9a-f]{4})*"\s*:(?1)(?:,\s*"([^"\\]*|\\["\\bfnrt\/]|\\u[0-9a-f]{4})*"\s*:(?1))*)?\s*\})\Z/is'/>
</xs:restriction>
</xs:simpleType>
但xs:pattern不支持(?1)。请帮忙
答案 0 :(得分:2)
由于XSD模式不支持递归正则表达式(?1)
,因此您应该甚至不尝试以其微弱的正则表达式支持进行验证。这根本不可能,任何编写正则表达式的尝试都不会正确验证所有输入。
我建议JSON的验证是单独完成的,可能是使用JSON解析库,或者是在正则表达式引擎支持递归正则表达式的环境中。