正则表达式验证器,必填字段

时间:2011-02-22 23:41:25

标签: asp.net regex validation

我正在尝试将正则表达式验证程序用于数字ID字段。该字段必须是任何数字的必填字段。目前,我正在使用:

="\d{1,}"

这不应该这样,用户必须至少输入1位数?如果我按下提交按钮并且字段为空,则会通过验证并回发..但如果我输入非数字字符,则错误很好。如果我想要零次或多次出现,我会使用:="(\d{1,})?"
为什么这不起作用?我是否需要将其与必填字段验证器结合使用?这会吮吸><

5 个答案:

答案 0 :(得分:4)

确保将属性ValidateEmptyText设置为true,否则CustomValidator将不会触发空文本。

编辑:您可以将{javascript函数附加到CustomValidator来完成此操作,因为我认为RegularExpressionValidator不会触发空控件。我已经创建了一个基本的例子来说明解决方案:

<script type="text/javascript">
    function CheckMyText(sender, args) {
        var compare = RegExp("\\d{1,}");
        args.IsValid = compare.test(args.Value);
        return;
    }
</script>

<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:Button ID="btnTest" runat="server" Text="Test" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Error!"
    ControlToValidate="txtTest" ValidateEmptyText="true"
    ClientValidationFunction="CheckMyText"></asp:CustomValidator>

我测试了它,似乎有效。如果您需要进一步的帮助,请发表评论。

答案 1 :(得分:1)

您仍然需要使用RequiredFieldValidator。

答案 2 :(得分:0)

我不确定用户输入ID的位置,但如果输入字段是TextBox控件,为什么不使用这样的内容:

if (tbID.Text.Length != 0)
{
    //Logic goes here
}

答案 3 :(得分:0)

当用户点击提交时,您需要确保不仅捕获空字符串,下面是查找任何空格(标签,空格等)的正则表达式+匹配字符不是数字(0-9)< / p>

 Dim FoundMatch As Boolean
    Try
        FoundMatch = Regex.IsMatch(SubjectString, "\Dm/rld$/\s", RegexOptions.IgnoreCase Or RegexOptions.Multiline)

'put your code here
    Catch ex As ArgumentException

'syntax error in regular expression
    End Try

我相信你需要在你的页面上使用回发,如果你决定使用RequiredFieldValidator你也可以使用上面的正则表达式

H个

答案 4 :(得分:0)

如果某人未使用CustomValidator,则您可以为同一控件设置RequiredFieldValidatorRegularExpressionValidator。在此处找到此解决方案:http://forums.asp.net/t/1230931.aspx。通常,这会导致错误消息被替换为第二个验证器,但有一种方法可以解决这个问题。您只需为两个验证器将Display属性设置为dynamic即可。现在,两个验证器的错误消息都显示在同一位置。示例代码:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="ErrorMsg" ControlToValidate="controlID"
ValidationExpression="regexExpression"
Display="Dynamic"></asp:RegularExpressionValidator>

<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ErrorMessage="ErrorMsg" ControlToValidate="controlID"
Display="Dynamic"></asp:RequiredFieldValidator>`