2013-03-26 15 views
1
返回false

我有以下的RegularExpressionValidator:正則表達式的作品上的RegularExpressionValidator但Regex.IsMatch

<asp:RegularExpressionValidator CssClass="Validator_alert" ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtPassword" 
     ErrorMessage="Dit kodeord skal være mindst 6 tegn langt og indholde et tal, et stort bogstav og lille bogstav. Kodeordet må ikke indeholde tegnene &amp; og &#37;." 
     ValidationExpression="(?!^[0-9]*$)(?!^[a-z])(?!^[A-Z]*$)^([[email protected]_:;+]{6,50})$" 
     SetFocusOnError="true" /> 

背後下面的代碼檢查藏漢表達:

string pattern = @"(?!^[0-9]*$)(?!^[a-z])(?!^[A-Z]*$)^([[email protected]_:;+]{6,50})$"; 

       Boolean meetsRequirements = false; 

       meetsRequirements = System.Text.RegularExpressions.Regex.IsMatch(pattern, txtPassword.Value); 
       meetsRequirements = System.Text.RegularExpressions.Regex.IsMatch(pattern, txtPasswordRepeat.Value); 

       return meetsRequirements; 

爲什麼IsMatch回報假,當txtPassword.Value和txtPasswordRepeat.Value中的值通過前端(RegularExpressionValidator)測試時?

回答

1

Regex.IsMatch需要兩個參數 - 第一個是輸入文本,第二個是圖案。你有不正確的參數順序。用途:

string pattern = @"(?!^[0-9]*$)(?!^[a-z])(?!^[A-Z]*$)^([[email protected]_:;+]{6,50})$"; 

Boolean meetsRequirements = false; 

meetsRequirements = System.Text.RegularExpressions.Regex.IsMatch(txtPassword.Value, pattern); 
meetsRequirements = System.Text.RegularExpressions.Regex.IsMatch(txtPasswordRepeat.Value, pattern); 

return meetsRequirements; 

而且最有可能,你應該檢查,如果兩個輸入都用正確的:

meetsRequirements = 
    System.Text.RegularExpressions.Regex.IsMatch(txtPassword.Value, pattern) 
    && System.Text.RegularExpressions.Regex.IsMatch(txtPasswordRepeat.Value, pattern); 
+0

衛生署!謝謝。 :) – Kenci 2013-03-26 11:47:52

相關問題