2017-09-14 202 views
1

使用Ext.net項目。我需要設置密碼驗證字段,以便在密碼之前或密碼之後不允許空格,並且密碼的長度不應超過15個字符(包括空格)。到目前爲止,我做了以下工作,但不起作用。Ext.net C#testfiled正則表達式驗證

問題是它將文本之間的空間計爲無效。 例如它不允許「密碼」,我不想讓「密碼」或「密碼」。

<ext:TextField ID="txtConfirmPwd" AllowBlank="false" InputType="Password" Name="txtConfirmPwd" runat="server" StyleSpec="width:96%;" Regex="^[^\s.^\s]{1,15}$" InvalidClass="invalidClass" Validator="ComparePwd" IDMode="Static"> 
<Listeners> 
    <Valid Handler="InvalidClass(this,true);" /> 
    <Invalid Handler="InvalidClass(this,false);" /> 
</Listeners> 
</ext:TextField> 
+1

嘗試'Regex =「^ \ S(?:。{0,13} \ S)?$」' –

+0

工作。請在答案部分發帖,以便我可以接受....謝謝。 – Maharshi

+0

@Maharashi我發表了一個解釋答案。 –

回答

1

您可以使用

Regex="^\S(?:.{0,13}\S)?$" 

詳情:

  • ^ - 串
  • 開始
  • \S - 一個非空白
  • (?:.{0,13}\S)? - 1或0序列:
    • .{0,13} - 任何零到13個字符
    • \S - 一個非空白符號
  • $ - 字符串的結尾。

這意味着,第一個字符必須是非空白字符,然後可以有最多14個字符,最後一個字符是非空白字符。

您可能實際上使用lookahead來達到相同的效果,^(?!\s)(?!.*\s$).{1,15}$(?!\s)是一個負向前視,如果第一個(如^後面的模式)char是空白字符,並且(?!.*\s$)匹配失敗(如果空白字符出現在字符串的末尾),則匹配失敗。但是,對於當前的任務來說這是不必要的複雜。