为什么我的正则表达式至少有1个大写字母?

时间:2015-06-09 09:39:06

标签: asp.net regex

我试图在asp中创建一个创建用户的东西,当然我想使用正则表达式,所以我确信它是一个很好的密码,他们正在进入。我尝试过很多东西,但是,每次FKIN时间都说它仍然需要输入至少1个大写字母,尽管我的传递几乎包含大写......

大写的正则表达式是第三个。

代码:

        <asp:Panel runat="server" DefaultButton="btnCreateUser">  
            <table>
                <tr>
                    <td>Gebruikersnaam</td>
                    <td><asp:TextBox runat="server" ID="txtUsername" />
                    <asp:RequiredFieldValidator ControlToValidate="txtUsername" ForeColor="Red" ID="rfUsername" runat="server" ErrorMessage="U heeft geen gebruikersnaam ingevoerd.<br />"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>Wachtwoord</td>
                    <td>
                        <asp:TextBox runat="server" ID="txtPassword" />  
                        <asp:RequiredFieldValidator ControlToValidate="txtPassword" ForeColor="Red" ID="rfPassword" runat="server" ErrorMessage="<br />U heeft geen wachtwoord ingevoerd.<br />"></asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator runat=server display=dynamic
                            ControlToValidate="txtPassword" foreColor="Red"
                            ErrorMessage="<br />Het wachtwoord moet minstens 1 cijfer bevatten. <br />"
                            ValidationExpression="(?=.*\d)$" />
                        <asp:RegularExpressionValidator runat=server display=dynamic
                              ControlToValidate="txtPassword" foreColor="Red"
                              ErrorMessage="Het wachtwoord moet minimaal uit 6 tekenen bestaan. <br />" 
                              ValidationExpression="(.{8,})$" />
                        <asp:RegularExpressionValidator runat=server display=dynamic
                              ControlToValidate="txtPassword" foreColor="Red"
                              ErrorMessage="Het wachtwoord moet minimaal 1 hoofdletter bevatten.<br />" 
                              ValidationExpression="^(?=.*[A-Z])$" />
                    </td>
                </tr>
                <tr>
                    <td>Naam</td>
                    <td>
                        <asp:TextBox runat="server" ID="txtDisplayName" />  
                        <asp:RequiredFieldValidator ControlToValidate="txtDisplayName" ForeColor="Red" ID="rfDisplay" runat="server" ErrorMessage="U heeft geen display naam ingevoerd.<br />"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label Text="" ID="lblNewUserStatus" runat="server" />
                    </td>
                    <td>
                        <asp:Button Text="Aanmaken" runat="server" ID="btnCreateUser" OnClick="btnCreateUser_Click" />
                    </td>
                </tr>
            </table>
         </asp:Panel>

3 个答案:

答案 0 :(得分:2)

^(?=.*[A-Z])$" 

这应该是^(?=.*[A-Z]).*$"

                          ^^

您的原始正则表达式需要一个空字符串^$,并且前瞻需要一个capital letter,因此实际上它不匹配任何内容。

您可以将所有ur regex组合在一个

^(?=.*\d)(?=.*[A-Z]).{8,}$

答案 1 :(得分:1)

您必须在验证模式中添加.*

^(?=.*[A-Z]).*$
            ^^

答案 2 :(得分:0)

如果您想要求至少有一个大写字母,[A-Z]就是您需要的所有正则表达式。您在任何地方看到的那些多前瞻密码正则表达式都是一次性完成整个验证。像你一样执行单独的正则表达式匹配,它很简单:

  • [0-9]匹配至少包含一位数的字符串
  • [A-Z]匹配至少包含一个大写ASCII字母和
  • 的字符串
  • .{8}匹配至少包含八个字符的字符串。