在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或者只有空格(没有字母数字字符),那么就不应该允许它。
尝试了空白崩溃属性,但在这种情况下,崩溃完成后应用maxlength。 所以也允许超过最大长度的值。
因此尝试下面的事情..<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}" />
但无法抓住正确的解决方案。
请指出正确的方法..
非常感谢您的建议!
答案 0 :(得分:3)
您使用<xs:whiteSpace>
限制在正确的轨道上,但值应为preserve
,以便不修改原始空格。
您可以使用此模式:
[\w\d ]*[\w\d][\w\d ]*
中央部分([\w\d]
)表示必须出现字母或数字。在该强制字母数字字符之前和之后,该字符串可以选择具有任何字母/数字/空格组合([\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
中包含的下划线字符,则可以将a-zA-Z
更改为\w
。
答案 1 :(得分:2)
这应该有效:
[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?