XSD 1.0 正则表达式不匹配两个特定的十六进制字符串
XSD 1.0 regex to not match two specific hexadecimal strings
我一直在尝试在 XML 架构中提出一个正则表达式来匹配 000001-FFFFFE
范围内的十六进制字符串。我可以让 000000
或 FFFFFF
不匹配,但不能同时在一个表达式中。
应匹配的字符串: EFEFEF
、EEEEEF
、FFFFFE
、101010
、10000
、 000001
不应匹配的字符串: 000000
、FFFFFF
有人有什么想法吗?为此,我已经在键盘上敲了几天了。
简而言之,所有 6 位十六进制值 除了 000000
和 FFFFFF
应该被允许。
以下XSD,只需要XSD1.0,
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="OneHexDigitNot0">
<xs:restriction base="xs:string">
<xs:pattern value="[1-9A-F][0-9A-F]{5}"/>
<xs:pattern value="[0-9A-F]{1}[1-9A-F][0-9A-F]{4}"/>
<xs:pattern value="[0-9A-F]{2}[1-9A-F][0-9A-F]{3}"/>
<xs:pattern value="[0-9A-F]{3}[1-9A-F][0-9A-F]{2}"/>
<xs:pattern value="[0-9A-F]{4}[1-9A-F][0-9A-F]{1}"/>
<xs:pattern value="[0-9A-F]{5}[1-9A-F]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OneHexDigitNot0AndOneHexDigitNotF">
<xs:restriction base="OneHexDigitNot0">
<xs:pattern value="[0-9A-E][0-9A-F]{5}"/>
<xs:pattern value="[0-9A-F]{1}[0-9A-E][0-9A-F]{4}"/>
<xs:pattern value="[0-9A-F]{2}[0-9A-E][0-9A-F]{3}"/>
<xs:pattern value="[0-9A-F]{3}[0-9A-E][0-9A-F]{2}"/>
<xs:pattern value="[0-9A-F]{4}[0-9A-E][0-9A-F]{1}"/>
<xs:pattern value="[0-9A-F]{5}[0-9A-E]"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="r" type="OneHexDigitNot0AndOneHexDigitNotF"/>
</xs:schema>
将根据要求成功验证具有 r
根元素和 6 位十六进制内容的 XML 文档, 除了 000000 和 FFFFFF。
我一直在尝试在 XML 架构中提出一个正则表达式来匹配 000001-FFFFFE
范围内的十六进制字符串。我可以让 000000
或 FFFFFF
不匹配,但不能同时在一个表达式中。
应匹配的字符串: EFEFEF
、EEEEEF
、FFFFFE
、101010
、10000
、 000001
不应匹配的字符串: 000000
、FFFFFF
有人有什么想法吗?为此,我已经在键盘上敲了几天了。
简而言之,所有 6 位十六进制值 除了 000000
和 FFFFFF
应该被允许。
以下XSD,只需要XSD1.0,
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="OneHexDigitNot0">
<xs:restriction base="xs:string">
<xs:pattern value="[1-9A-F][0-9A-F]{5}"/>
<xs:pattern value="[0-9A-F]{1}[1-9A-F][0-9A-F]{4}"/>
<xs:pattern value="[0-9A-F]{2}[1-9A-F][0-9A-F]{3}"/>
<xs:pattern value="[0-9A-F]{3}[1-9A-F][0-9A-F]{2}"/>
<xs:pattern value="[0-9A-F]{4}[1-9A-F][0-9A-F]{1}"/>
<xs:pattern value="[0-9A-F]{5}[1-9A-F]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OneHexDigitNot0AndOneHexDigitNotF">
<xs:restriction base="OneHexDigitNot0">
<xs:pattern value="[0-9A-E][0-9A-F]{5}"/>
<xs:pattern value="[0-9A-F]{1}[0-9A-E][0-9A-F]{4}"/>
<xs:pattern value="[0-9A-F]{2}[0-9A-E][0-9A-F]{3}"/>
<xs:pattern value="[0-9A-F]{3}[0-9A-E][0-9A-F]{2}"/>
<xs:pattern value="[0-9A-F]{4}[0-9A-E][0-9A-F]{1}"/>
<xs:pattern value="[0-9A-F]{5}[0-9A-E]"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="r" type="OneHexDigitNot0AndOneHexDigitNotF"/>
</xs:schema>
将根据要求成功验证具有 r
根元素和 6 位十六进制内容的 XML 文档, 除了 000000 和 FFFFFF。