2015-06-16 86 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

相關問題