2015-06-16 140 views
2

在XML中,我有一个标签说<membercode>XML模式正则表达式不允许单独空格

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

的membercode如下必须接受的值:

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}" /> 

,但没能在正确的解决方案举行。

请点我正确的做法对于这个..

您的建议,非常感谢!

+1

我认为如果您告诉我们需求(它需要一到三个字母才行,它可以在末尾有可选空格等),而不仅仅是示例,会更好。 – sergioFC

+0

按要求编辑了该问题。 – Vignesh

回答

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> 

请注意,您可以更改\wa-zA-Z,如果你不希望也包含在\w下划线。

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? 
+1

“Y”(有2个空格)未通过。 –

+1

也许用这个目标更新你的问题;-) – pjanssen

+1

'\ s?[\ w \ d] {1,3} \ s?'works .. but failed for case“XY”;因为在这种情况下总字符数是4。 – Vignesh

相关问题