我对正则表达式不是很擅长,有人可以帮助我使用这些规范的正则表达式:
0-365或888之间的任何整数
答案 0 :(得分:1)
考虑到澄清,我发现这个问题非常有趣。如果考虑一个数字的词汇表示在XSD方面是什么,那么只有正则表达式可以做到这一点的合法模式。例如,要求可能是禁止前导零。
当然,对于像这样的场景,可以针对正则表达式提出更多参数;如果我们从字面上理解问题是什么,即any number
然后浮动,双精度和小数(一点点)增加了复杂性。所以,让我们假设任何整个数字。
我没有花太多时间来优化模式,更专注于使其可读,但我在下面显示它(在XSD中模式是隐含的锚定开始和结束),以及其他选项测试各种实现......
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test">
<xsd:complexType>
<xsd:attribute name="pattern">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:pattern value="0*([1-2]*[0-9]{1,2}|3[0-4][0-9]|35[0-6]|888)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="uint">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="other">
<xsd:simpleType>
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:enumeration value="888"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:maxInclusive value="356"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
还有一些XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<test pattern="0000356" uint="0000888" other="0356"/>
答案 1 :(得分:1)