Xml 模式正则表达式不允许单独使用空格

Xml schema regex to not allow white spaces alone

在 xml 中,我有一个标签说 <membercode>

当前字段的正则表达式模式是<xs:pattern value="[a-zA-Z0-9\s]{1,3}" />

会员代码必须接受如下值:

1) "XY"  -> pass

2) "XY " -> pass

3) "   " -> i need to have this failed. but it is getting passed.

4) " XY " -> need to be failed 

编辑:要求:

1) 允许的字符总数不得超过 3。

2) 在允许的3个字符中,可以有空格。例如:"XY", "XY "," XY" , "X "

3) 但是如果字符总数超过 3 个或只有空格(没有字母数字字符)则不应允许。

尝试过空白折叠 属性,但在那种情况下,最大长度是在折叠完成后应用的。 因此也允许超过最大长度的值。

因此尝试了下面的东西..

<xs:pattern value="[a-zA-Z0-9]{1,3}[\s?]" />
<xs:pattern value="[a-zA-Z0-9]{1,3}|[a-zA-Z0-9\s?]{1,3}" />

但无法找到正确的解决方案。

请指出正确的方法..

非常感谢您的建议!

这应该有效:

[a-zA-Z0-9][a-zA-Z0-9\s]{1,2}

[\w\d][\w\d\s]{1,2} equivalent

这对你有帮助吗?

\s?[\w\d]{1,3}\s?

您使用 <xs:whiteSpace> 限制是正确的,但该值应该是 preserve 以便不修改原始空格。

您可以使用这个模式:

[\w\d ]*[\w\d][\w\d ]*

中心部分([\w\d])说必须出现一个字母或数字。在该强制性字母数字字符之前和之后,该字符串可以选择具有任何 letter/digit/space 组合 ([\w\d ]*)。限制 <xs:whiteSpace><xs:maxLength> 确保长度不超过 3 个字符串,包括原始空格。

<xs:element name="elem">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="preserve"/>
            <xs:maxLength value="3"/>
            <xs:pattern value="[\w\d ]*[\w\d][\w\d ]*"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

请注意,如果您不想要 \w 中也包含的下划线字符,可以将 \w 更改为 a-zA-Z