1

私は次のRegularExpressionValidatorを持っています:

<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]*$)^([a-zA-Z0-9!@_:;+]{6,50})$"
        SetFocusOnError="true" />

また、式をチェックするための次のコードもあります。

string pattern = @"(?!^[0-9]*$)(?!^[a-z])(?!^[A-Z]*$)^([a-zA-Z0-9!@_:;+]{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;

txtPassword.Valueの値とtxtPasswordRepeat.Valueがフロントエンド(RegularExpressionValidator)のテストに合格したときに、IsMatchがfalseを返すのはなぜですか?

4

1 に答える 1

1

Regex.IsMatch2つのパラメータを取ります。最初のパラメータは入力テキスト、2番目のパラメータはパターンです。パラメータの順序が正しくありません。使用する:

string pattern = @"(?!^[0-9]*$)(?!^[a-z])(?!^[A-Z]*$)^([a-zA-Z0-9!@_:;+]{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);
于 2013-03-26T11:44:54.483 に答える