验证XSD架构中的小数3.4 ^ [0-9] {1,3}(?:\。[0-9] {1,4})?$

时间:2015-01-21 13:11:15

标签: regex xml validation xsd

我需要安装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>
				 

2 个答案:

答案 0 :(得分:1)

您正在使用XSD定义的正则表达式语法中没有的几种构造。 (一些模式处理器,例如Microsoft,已知会忽略这种语法,只使用它们在内部使用的正则表达式库中的任何工作)。

不允许的构造包括^和$(因为正则表达式是隐式锚定而不需要)和“(?”

答案 1 :(得分:0)

您不能在那里拥有非捕获组并开始/结束标志。只需将带有图案的线条更改为此,您就可以了:

<xs:pattern value="[0-9]{1,3}(\.[0-9]{1,4})?"/>