出于一些限制原因,我无法深入研究我的项目.
本质上,我试图在序列化之前预先验证对象,然后根据模式验证它.模式验证了一个名称,我知道这个名称并不理想,最好不要验证名称 - 但我似乎无法复制一个有效的正则表达式来解决模式试图做的事情.
<xsd:simpleType name="CharsetD">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Za-z \-']*"/>
</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>
Run Code Online (Sandbox Code Playgroud)
我只是想在上面的例子中我可以尝试并只使用xsd:pattern它charset.
我试图使用[A-Za-z \-']*哪个返回一个名称,Luke2如有效,但架构验证说它不是因为它包含一个数字.
我的问题是,如何在一个c#正则表达式中复制上述内容?此外,架构模式的运行方式与我使用它的方式之间是否有任何差异.NET?
我发现了问题,尽管由于我没有真正广泛地工作而被掩盖XML Schema
区别
该CharsetD类型不仅仅使用模式,因为仅此模式还不足以用数字验证名称,因此当我尝试仅使用模式时 - 它允许使用数字。然而,类型上有一行限制了数字,因此模式会返回错误,而正则表达式不会返回错误。
<xsd:restriction base="xsd:string">
Run Code Online (Sandbox Code Playgroud)
解决方案
我创建了一个不同的单个正则表达式,它将满足string我的架构中应用的限制。
^[\p{L} \.\-]+$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |