2012-09-22 15 views
1
最大的數字表達

我有以下的正則表達式:定期排除逗號

ValidationExpression="[0-9]+(,[0-9]+)*" 

它允許在格式號:12,2345或231,23454

現在我想包括下述條件總體上只允許7位數字,不包括 逗號。 的下面是修改後的代碼

的下面在項模板

我也有在項模板

<asp:TextBox runat="server" ID="tbText" CssClass="someclass" MaxLength="11" 
              %>'></asp:TextBox> 

<asp:RegularExpressionValidator ValidationExpression="[0-9]+(,[0-9]+)*" ID="ValComp" runat="server" CssClass="asdf" 
    ControlToValidate="tbMileage" Text="*" Enabled="false" Display="Dynamic"/> 

<asp:CustomValidator ID="cvalMileage" runat="server" CssClass="adsf" Text="*" Display="Dynamic"> 
</asp:CustomValidator> 

<asp:CustomValidator ID="CustomValidator1" ClientValidationFunction="functionName" 
    runat="server" CssClass="asd" Text="*" Display="Dynamic"> 
</asp:CustomValidator> 

單選按鈕由於我想驗證的單選按鈕託運對應文本框中的下面是我寫的代碼

var selText = $(".Class1 input[type=radio]:checked").closest(".Class1").find(".subClassText input[type=text]").val(); 
alert('Hi'); 
if (selText.replace(",", "").length <= 7) { 
    args.IsValid = true; 
} 
else { 
    args.IsValid = false; 
} 

al埃爾特火兩次,並基於參數是假我有一個彈出,是兩次射擊

謝謝。

+1

當面對一個問題,很多人說themselfs: 「我能解決這個使用正則表達式」。現在他們有兩個問題。 –

回答

2

正則表達式不擅長這個問題,但如果你限制你輸入最多一個逗號的這個表達式將適合:

([0-9]{0,0}[,]?[0-9]{0,7})|([0-9]{0,1}[,]?[0-9]{0,6})|([0-9]{0,2}[,]?[0-9]{0,5})|([0-9]{0,3}[,]?[0-9]{0,4})|([0-9]{0,4}[,]?[0-9]{0,3})|([0-9]{0,5}[,]?[0-9]{0,2})|([0-9]{0,6}[,]?[0-9]{0,1})|([0-9]{0,7}[,]?[0-9]{0,0}) 

你會認識到,這個問題是不是很適合正則表達式因爲這表達被固定爲你最大的7

+0

我的正則表達式很容易修改根據我的req。是否更好地使用一些JavaScript/jQuery刪除特殊字符,並設置最大長度爲數字只,您能否提供一些參考 –

0

你可以使用一個CustomValidator控制與客戶端驗證這樣的:

ASPX代碼:

<asp:CustomValidator id="CustomValidator1" runat="server" 
      ControlToValidate="YourControlNameHere" 
      ClientValidationFunction="ClientValidation" 
      OnServerValidate="ServerValidation" 
      ErrorMessage="Invalid number." /> 

的JavaScript(用了jQuery):

function ClientValidation(source, arguments) 
{ 
    var inputText = arguments.Value; 
    var expression = /^[0-9]+(,[0-9]+)*$/; 
    if (expression.test(inputText) && inputText.replace(",", "").length <= 7) { 
     arguments.IsValid = true; 
    } 
    else { 
     arguments.IsValid = false; 
    } 
} 

C#代碼隱藏:

public void ServerValidation(object source, ServerValidateEventArgs args) 
{ 
    string inputText = args.Value; 
    Regex regex = new Regex(@"^\d+(,\d+)*$"); 
    if (regex.IsMatch(inputText) && inputText.Replace(",", "").Length <= 7) 
    { 
     args.IsValid = true; 
    } 
    else 
    { 
     args.IsValid = false; 
    } 
} 
+0

我可以得到它沒有自定義驗證程序,因爲我必須驗證所有內部中繼器,只是一個常規表達會更好,即使它更大 –

+0

@phanikumar - 在中繼器內使用CustomValidator應該不是問題。您之前正在使用RegularExpressionValidator控件,對嗎?您應該能夠以相同的方式使用CustomValidator。 –

+0

是的,我已經在項目模板中包含customvalidator。我已經實現了客戶端驗證功能。現在驗證功能會觸發兩次,如果我提醒我可以看到它。我修改了上面的代碼,請看看它 –