我需要安装XSD来验证十进制数3.4。整个部分最多可包含3个字符,小部分不是必需的,但如果有的话,最多需要4个字符。
正则表达式^ [0-9] {1,3}(?:。[0-9] {1,4})?$在测试站点工作,但是当我输入XSD时出错:“InvalidRegex:模式值'^ [0-9] {1,3}(?:。[0-9] {1,4})?$'不是有效的正则表达式。报告的错误是:'这当前选项设置不支持表达式。在列'{2}'。“
XSD架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="st_decimal7-4">
<xs:restriction base="xs:decimal">
<xs:pattern value="^[0-9]{1,3}(?:\.[0-9]{1,4})?$"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="teste">
<xs:complexType>
<xs:sequence>
<xs:element name="valor" type="st_decimal7-4" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:1)
您正在使用XSD定义的正则表达式语法中没有的几种构造。 (一些模式处理器,例如Microsoft,已知会忽略这种语法,只使用它们在内部使用的正则表达式库中的任何工作)。
不允许的构造包括^和$(因为正则表达式是隐式锚定而不需要)和“(?”
答案 1 :(得分:0)
您不能在那里拥有非捕获组并开始/结束标志。只需将带有图案的线条更改为此,您就可以了:
<xs:pattern value="[0-9]{1,3}(\.[0-9]{1,4})?"/>