2012-12-19 119 views
6

由於種種限制原因,我無法真正深入我的項目。XSD:Pattern和C#Regex之間有區別嗎?

本質上,我試圖在序列化它之前預先驗證對象,然後根據模式對其進行驗證。這個模式驗證了一個名字,我知道這不是一個理想的名字,你最好不要驗證一個名字 - 但我似乎無法複製一個有效的正則表達式來表示模式正在嘗試做什麼。

<xsd:simpleType name="CharsetD"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:pattern value="[A-Za-z \-&apos;]*"/> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:element minOccurs="0" maxOccurs="2" name="Fore"> 
    <xsd:simpleType> 
    <xsd:restriction base="CharsetD"> 
     <xsd:minLength value="1"/> 
     <xsd:maxLength value="35"/> 
     <xsd:pattern value="[A-Za-z].*"/> 
    </xsd:restriction> 
    <xsd:simpleType> 
</xsd:element> 

我只是在想,我可以嘗試,只是使用xsd:patterncharset上述情況。

我嘗試使用[A-Za-z \-&apos;]*,它返回了一個名稱,如Luke2,但是架構驗證表示它不是因爲它包含一個數字。

我的問題是,我怎麼能複製上述在一個單一的c#正則表達式?另外,模式模式如何運作,與我在未來可以注意到的.NET中是否有區別?

回答

2

我已經發現了這個問題,雖然僞裝成我還沒有真正廣泛地與XML Schema

的差異

CharsetD類型不只是使用該模式的工作,因爲這本身ISN」用數字驗證名稱是足夠好的,所以當我試圖使用模式時 - 它允許使用數字。在類型上有一行限制數字,因此爲什麼模式在正則表達式沒有返回錯誤。

<xsd:restriction base="xsd:string"> 

解決方案

我創建了一個不同的單正則表達式這將迎合了在我的架構應用的string限制。

^[\p{L} \.\-]+$ 
相關問題