首页 > 解决方案 > XSD 字符串模式,包括带有拉丁字符的电子邮件

问题描述

<xsd:element name="MigrCustContactEmail" type="StringX50Email" minOccurs="0" maxOccurs="1"/>


<xsd:simpleType name="StringX50Email">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="50"/>
            <xsd:pattern value="[A-Za-z0-9!#$%&amp;'*+/=?^_`{|}~.\-]+[@][A-Za-z0-9.\-]+"/>
        </xsd:restriction>
    </xsd:simpleType>

它适用于普通电子邮件,但是当它在 XML "groupesÖtoureiffel.paris@maill.com" 中出现这样的字符串时

它给出错误: cvc-pattern-valid: Value 'groupes╓toureiffel.paris@mail.com' is not facet-valid 关于模式'[A-Za-z0-9!#$%&'*+/=?^_{|}~.-]+[@][A-Za-z0-9 .-]+' 用于类型“StringX50Email”`

谁能帮我改变模式?

标签: xmlxsdpattern-matchingxsd-validationxml-validation

解决方案


您可以使用

<xsd:pattern value="[\p{L}0-9!#$%&amp;'*+/=?^_`{|}~.-]+@[\p{L}0-9.-]+"/>

\p{L}构造匹配任何 Unicode 字母。

详情

  • [\p{L}0-9!#$%&amp;'*+/=?^_`{|}~.-]+ - 一个或多个 Unicode 字母、ASCII 数字、!, #, $, %, &, ', *, +, /, =, ?, ^, _, `, {, |, }, ~,.-
  • @- 一个@字符
  • [\p{L}0-9.-]+- 一个或多个 Unicode 字母、ASCII 数字.-.

推荐阅读