2012-09-19 72 views
0

嗨我需要驗證密碼只有字母數字字符(應呈現字母和數字從0..9)。我的意思是它應該至少包含一個數字和字母剩餘xsd中的字母數字密碼驗證

我用正則表達式是這樣的:

 <xsd:simpleType name="PasswordType"> 
     <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$"/> 
     </xsd:restriction> 
    </xsd:simpleType> 

但是Eclipse抱怨錯誤: InvalidRegex:?!模式價值」^[0- 9] $)(?!^ [a-zA-Z] $)^([a-zA-Z0-9] {8,20})$'不是有效的正則表達式。報告的錯誤是: '意外元字符'。

有沒有人可以幫助如何解決這個問題?

謝謝

回答

0

缺少左括號?

<xsd:simpleType name="PasswordType"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:pattern value="(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$"/> 
    </xsd:restriction> 
</xsd:simpleType> 
+0

不是合法的XSD正則表達式。 –

+0

適用於我,使用Visual Studio 2010 XSD驗證 – MiMo

+0

Visual Studio 2010未正確實現XSD正則表達式語言的有趣證據。 –

1

我不知道你使用的正則表達式語法,但你給的表達不符合在XSD規範中定義的語法。你說你想要一串包含至少一個數字的字母數字字符。一種識別該語言的XSD式正則表達式

\p{L}*\d(\p{L}|\d)* 

它接受任何Unicode字母和小數位的混合;如果你想限制密碼ASCII,你可以說

[a-zA-Z]*[0-9][a-zA-Z0-9]* 

要限制長度在某處20間8,以最簡單的做法是使用minLengthmaxLength方面。

+0

雖然 – MiMo

+0

爲真,但會接受所有數字的密碼;我明白這是OP要求的結果(字母數字,至少包含一位數;全位數字符串確實滿足該要求)。 –

+0

我理解問題的方式是密碼必須包含字母和數字。最初的'(?!^ [0-9] * $)'不包括全數字密碼。 – MiMo