我不太擅长正则表达式,有人可以帮助我使用这些规范的正则表达式:
0-365 或 888 之间的任何整数
考虑到澄清,我发现这个问题真的很有趣。如果考虑 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"/>