【问题标题】:Why regularexpressionvalidator is being ignored?为什么正则表达式验证器被忽略?
【发布时间】:2018-10-24 10:19:37
【问题描述】:

我已经使用正则表达式验证器实现了一个正则表达式,但它不起作用。

就像它忽略了验证器一样。为什么 ?

  <div class="form-group">
                            <label class="control-label">
                                New Password
                                 <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtnewPassword"
                                     ErrorMessage="*" Display="Dynamic" ForeColor="red" ValidationGroup="acc"></asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="regexValNewPassword" runat="server" Display="Dynamic" ForeColor="red" ValidationGroup="acc"
                                    ControlToValidate="txtnewPassword"
                                    EnableClientScript="False"
                                    ErrorMessage="***"
                                    ValidationExpression="^[1-9]+[0-9]*$" Visible="True">
                                    *
                                </asp:RegularExpressionValidator>

                            </label>
                            <asp:TextBox runat="server" ID="txtnewPassword" TextMode="Password" CssClass="form-control passwords"></asp:TextBox>

                        </div>

更新:

见.. 我希望我的正则表达式在我只输入一串数字时抛出错误,例如123455. 它应该只接受混合字符字符串,例如12ac3b12 或 aac2211@11

【问题讨论】:

  • 如果我没记错的话可以简化为^[1-9][0-9]*$
  • 不工作的兄弟
  • 我可以获取您要匹配的输入字符串吗?
  • 123aaa。是我的输入字符串
  • 即使与您在帖子中给出的正则表达式也不匹配。我可以知道你想匹配什么吗?给出一些应该匹配的样本和一些不匹配的样本?

标签: c# asp.net regex webforms


【解决方案1】:

如果输入只有数字,您可以使用不匹配的正则表达式。只有根据您当前的要求,输入至少有一个数字和一个字母,它才会匹配。这里的最小密码长度为 2,您可以通过在此处指定数字 {N,} 将其设为任意长度。如果您对字符集有类似的其他要求,您可以进一步调整正则表达式,或者让我知道,我可以进一步更新正则表达式。

^(?=.*[A-Za-z])(?=.*\d).{2,}$

演示,

https://regex101.com/r/Fv7cw7/1

【讨论】:

    【解决方案2】:

    您的正则表达式 ^[1-9]+[0-9]*$ 仅匹配数字并且应该以 1-9 开头。

    要检查是否至少有一个字符和一个数字,您可以使用正向前瞻。

    ^(?=.*[A-Za-z@])(?=.*\d)[@a-zA-Z\d]+$

    Regex demo

    说明

    • ^ 字符串开头
    • (?=.*[A-Za-z@]) 肯定前瞻断言来自 character class 的 1 个字符
    • (?=.*\d) 肯定前瞻断言 1 位数
    • [@a-zA-Z\d]+ 匹配字符类中允许的 1+ 倍。您可以将允许匹配的内容添加到字符类中。
    • $ 字符串结束

    由于 2 个正向前瞻,最小长度为 2 个字符。如果您想匹配最小长度(例如 8),您可以在字符类中添加 quantifier(如 {8})而不是 +

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多