ASP.Net RegularExpression Validator - 解析bug

时间:2010-01-24 00:49:19

标签: asp.net javascript regex validation

我想使用ASP.Net RegExp验证器编写正则表达式,以确保字段仅包含数字和小数值,并且至少包含一个字符。

^[0-9]{1,40}(\.[0-9]{1,2})?$

基本上:[0-9]{1,40} - 表示至少一到40个数字字符。

ASP.Net regexp验证器不会为空字段触发 - 其中至少有一个字符。

解决方法:在Javascript中使用自定义验证器和regexp检查:

 function validateMinTrans(sender, args) {
        var error = true;
        var txtMinTrans = document.getElementById('TxtMinTrans');
        var regexp = new RegExp("^[0-9]{1,40}(\.[0-9]{1,2})?$");
        if (txtMinTrans.value.match(regexp)) {
            alert("good");
        }
        else {
            alert("bad");
        }

        if (error)
            args.IsValid = false;
        else
            args.IsValid = true;
    }

因此,我甚至不必检查txtMinTrans.length == 0

想知道是否有其他人经历过此事。

2 个答案:

答案 0 :(得分:1)

ASP.NET验证程序通常不会为空字段触发;如果要检查,则需要添加RequiredFieldValidator。在同一个字段上有两个验证器没有问题。

这允许您拥有可选字段:仅使用RegularExpressionValidator意味着“为空或与此正则表达式匹配”。

答案 1 :(得分:0)

除非字段有值,否则Regex验证器确实不会运行。但是,您也可以将RequiredFieldValidator指向同一个TextBox控件,这样两者都将处理它们自己的责任 - 空和模式。