繁体   English   中英

XSD:Pattern和C#Regex之间有区别吗?

[英]Is there a difference between XSD:Pattern and 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>

我只是以为在上述情况下,我可以尝试为charset使用xsd:pattern

我尝试使用[A-Za-z \\-&apos;]* ,该名称返回了诸如Luke2的名称为有效名称,但是架构验证指出,并不是因为它包含数字。

我的问题是,如何在单个c#正则表达式中复制以上内容? 而且,与我将来可以注意到的模式模式相比,在.NET中使用模式模式的操作方式之间是否有任何区别?

我发现了问题,尽管由于我没有真正广泛地使用XML Schema掩饰了

区别

CharsetD类型不仅使用模式,因为仅凭此模式还不足以用数字验证名称,因此当我尝试仅使用模式时-它允许使用数字。 但是,在类型上有一行限制数字,因此为什么该模式在正则表达式没有的地方返回错误。

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

我创建了一个单独的正则表达式,可以满足我的架构中应用的string限制。

^[\p{L} \.\-]+$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM