包含带有拉丁字符的电子邮件的 XSD 字符串模式

问题描述

public static Long getValue(supplier<String> str,supplier<Long> defVal) {
    return getValue(str.get(),defVal.get()); // calling implementation above 
}

Long cpuVal = getValue(rt::getcpu,defaultPerContainer::getcpu);
Long memory = getValue(rt::getMemory,defaultPerContainer::getMemory);

它对于普通电子邮件来说工作正常,但是当它出现在 XML 中的字符串时,“groupesÖtoureiffel.paris@maill.com”

它给出错误: cvc-pattern-valid:值 'groupes╓toureiffel.paris@mail.com' 对于模式 <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> {|}~.-]+[@][A-Za-z0- 不是方面有效的9.-]+' 用于类型 'StringX50Email'`

谁能帮我改变模式?

解决方法

你可以使用

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

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

详情

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...