xml - 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!#$%&'*+/=?^_`{|}~.\-]+[@][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”`
谁能帮我改变模式?
解决方案
您可以使用
<xsd:pattern value="[\p{L}0-9!#$%&'*+/=?^_`{|}~.-]+@[\p{L}0-9.-]+"/>
该\p{L}
构造匹配任何 Unicode 字母。
详情:
[\p{L}0-9!#$%&'*+/=?^_`{|}~.-]+
- 一个或多个 Unicode 字母、ASCII 数字、!
,#
,$
,%
,&
,'
,*
,+
,/
,=
,?
,^
,_
,`
,{
,|
,}
,~
,.
或-
@
- 一个@
字符[\p{L}0-9.-]+
- 一个或多个 Unicode 字母、ASCII 数字.
或-
.
推荐阅读
- javascript - 滚动时如何使Javascript执行?
- c++ - 这是关于删除指针的菜鸟问题
- listview - 如何在 Xamarin 中的 ListView.Header 和 ListView.ItemTemplate 上创建多行?
- r - 不使用 apriori() 函数在 R 语言中实现 Apriori 算法
- ansible - (apache2_module) 模块不支持的参数
- mongodb - 在 MongoDB Compass 中创建聚合表达式
- rest - 在 S3 文件上传事件时触发 Java REST 端点
- python - 我想在一列中找到小于 100 的值,但列的名称有一个空格。我该如何编辑它?
- postgresql - Ecto 以分钟为单位查询两个日期之间的差异
- java - 查询中的 Spark-sql 错误:不支持的 java 类型类 java.util.ArrayList