2010-07-21 68 views
0

该片段XSD正则表达式失败验证:意外元字符

<xsd:element name="HomePhone" minOccurs="0"> 
    <xsd:simpleType> 
      <xsd:restriction base="xsd:string"> 
       <xsd:pattern value="^+[0-9]{1,2}-[0-9]{1,2}-[0-9]{3}[0-9]{0,1}-[0-9]{3}[0-9]{0,1}$"></xsd:pattern> 
      </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element> 

被返回错误

XSD:正则表达式 “^ + [0-9] {1,2} - [0-9] {1,2} - [0-9] {3} [0-9] {0,1} - [0-9] {3} [0-9] {0,1} $” 未能在位置1验证: 意外的元字符。

任何想法是什么错?

预先感谢

回答

2

在XML Schema正则表达式中,所有匹配都隐式锚定在两端,因此您不需要添加^$。根据规范,这两个字符应该被视为字面文本。但是,如果是这样的话,你的正则表达式中的^+会尝试匹配一个或多个^字符,而不是抛出异常。

我怀疑他们被视为锚,尽管规范。而且不止一次匹配锚点,所以+被视为错误。想想看,在任何情况下都没有量化的位置是没有意义的; +应该做什么?无论如何,你的正则表达式应该工作,如果你删除该字符。

2
^  Start of line 
+  preceding character one or more times 

没有 '前面的字符'。