2010-07-21 64 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 

沒有 '前面的字符'。