gpt4 book ai didi

regex - XSD 架构中的正则表达式 : mix and max size of two combined elements

转载 作者:行者123 更新时间:2023-12-04 20:15:30 27 4
gpt4 key购买 nike

我想为 XSD 类型创建一个限制,只允许一个大小为 0 到 64 的元素、一个点和另一个大小为 0 到 64 的元素。我试过这个,但没有成功。

<xs:simpleType name="myString_Type">
<xs:restriction base="xs:string">
<xs:pattern value="^([a-zA-Z\-]){0-64}.$([a-zA-Z\-]){0-64}"/>
</xs:restriction>
</xs:simpleType>

谢谢。

最佳答案

^$不用于 XSD 中的正则表达式 - 它总是从头到尾匹配,就好像它们在那里一样。因此,只需省略它们:

[a-zA-Z\-]{0,64}\.[a-zA-Z\-]{0,64}

并逃离 . (或使用 NullUserException 所说的字符类)。

来自 XML Schema part 2: datatypes规范:

Unlike some popular regular expression languages (including those defined by Perl and standard Unix utilities), the regular expression language defined here implicitly anchors all regular expressions at the head and tail, as the most common use of regular expressions in ·pattern· is to match entire literals.



他们的例子是使用 A.*Z不是 ^A.*Z$
因为 ^$不是特殊字符,它只会尝试在您的 xml 文档中匹配它们。

据说 unix 是不兼容的正则表达式语法的集合,因此通过不遵循 unix 标准,它们遵循了 unix 传统。

您可以在以下位置测试此示例: http://www.utilities-online.info/xsdvalidation/ (来自 NullUserException 的测试实例)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="eg" type="myString_Type"/>

<xs:simpleType name="myString_Type">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\-]{0,64}\.[a-zA-Z\-]{0,64}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

<eg>something.something-else</eg>

关于regex - XSD 架构中的正则表达式 : mix and max size of two combined elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com