2010-01-24 50 views
0

我想用ASP.Net RegExp驗證器編寫一個正則表達式,它可以確保一個字段僅包含數字和小數值,並且至少包含一個字符。ASP.Net RegularExpression Validator - 解析bug

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

本質上:[0-9]{1,40} - 意味着至少有一到四十個數字字符。

ASP.Net正則表達式驗證器不會觸發空字段 - 其中至少沒有一個字符。

解決方法:使用與JavaScript中的正則表達式檢查自定義驗證:

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。想知道是否有其他人遇到過這種情況。

回答

0

正則表達式驗證器確實不運行,除非該字段有值。但是,您也可以將RequiredFieldValidator指向同一個TextBox控件,因此兩者都將處理它們自己的責任 - 空白和模式。

+0

是的,這就是我過去不得不做的事情......但只是概述了同一表達在兩者之間表現不同的方式上的差異。 – ElHaix 2010-01-29 00:38:42

+0

@ElHaix所以......真正的問題是什麼? – 2010-01-29 01:12:50

+0

好吧,基本上我指出了正則表達式在RequiredFieldValidator和自定義JS正則表達式驗證之間的區別。 – ElHaix 2010-03-12 17:52:32

1

ASP.NET驗證器通常不會爲空字段激發;如果你想檢查這個,你需要添加一個RequiredFieldValidator。在同一領域有兩個驗證器沒有問題。

這可以讓你有可選的字段:只要有RegularExpressionValidator意味着「是空的或匹配這個正則表達式」。