2011-02-22 76 views
2

我正在嘗試使用數字ID字段的正則表達式驗證器。該字段必須是任何數字的必填字段。目前,我正在使用:正則表達式驗證器,必填字段

="\d{1,}" 

不應該這樣做,所以用戶必須至少輸入1位數?如果我點擊提交按鈕的字段爲空,它會通過驗證併發回..但是如果我輸入非數字字符,它的錯誤很好。如果我想要零次或多次出現,我會使用:="(\d{1,})?"
爲什麼不能正常工作?我是否需要結合使用必需的字段驗證程序?這將吸> <

+0

我不是正則表達式大師,但嘗試\ d + – berkay 2011-02-22 23:49:25

+0

對不起,我試過了。它沒有改變任何東西 – 2011-02-22 23:51:36

+0

這個呢? 「^ \ d {0,9} $」 – berkay 2011-02-22 23:53:18

回答

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> 

我測試了它,它似乎工作。如果您需要更多幫助,請留下評論。

+0

這是一個RegularExpressionValidator – 2011-02-22 23:51:56

+0

尼斯..感謝。確切地說,我需要:) – 2011-02-23 17:45:17

+0

嗯,實際上它不適用於特殊字符。 「4/5」,「3#」,「4'5」全部通過驗證..這是爲什麼? – 2011-02-23 18:58:28

0

我不知道在哪裏的用戶正在輸入的ID,但如果輸入字段TextBox控件你爲什麼不使用這樣的事情:

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

我寧願擁有它,以便它可以驗證沒有回發。我知道我可以使用JavaScript ..但一個regularexpressionvalidator應該能夠照顧這對我... – 2011-02-22 23:52:59

+0

我沒有看到任何其他解決方案,但一個RequiredFieldValidator ...讓我們等待比我更有經驗的人。 ;) – 2011-02-22 23:54:37

+0

正確的你是大聲笑 – 2011-02-23 17:21:14

1

您仍然需要使用RequiredFieldValidator。

+0

+1我害怕這一點。 Kelsey向我展示了一個自定義驗證工具:) – 2011-02-23 17:45:56

0

當用戶點擊提交時,你需要確保不僅空的字符串被捕獲,下面是一個正則表達式,用於查找任何空格(製表符,空格等)+匹配如果字符不是數字(0-9)

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個

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>`