簡體   English   中英

RegularExpressionValidator在空白項上不觸發

[英]RegularExpressionValidator not firing on white-space entry

我想驗證僅包含數字的字符串。 容易驗證? 我添加了RegularExpressionValidator和ValidationExpression =“ / d +”。

看起來還不錯-但僅輸入空格時,沒有任何驗證! 甚至很多空間都可以通過驗證。 我不需要這是強制性的。

我可以在服務器上進行裁剪,但是不能使用正則表達式執行所有操作!

這是設計使然,容易使很多人離開。 RegularExpressionValidator不會將字段設為必填字段,而是允許其為空白並接受空格。 \\ d +格式正確。 即使使用^ \\ d + $也將導致允許空格的相同問題。 強制此操作禁止空白的唯一方法是還包括一個RequiredFieldValidator,以對同一控件進行操作。

這是根據RegularExpressionValidator文檔進行的 ,該文檔指出:

如果輸入控件為空,則驗證成功。 如果關聯的輸入控件需要一個值,則除了RegularExpressionValidator控件外,還使用RequiredFieldValidator控件。

對后面代碼中的字段進行正則表達式檢查將按預期進行; 這只是RegularExpressionValidator的問題。 因此,可以想像地改用CustomValidator並說args.IsValid = Regex.IsMatch(txtInput.Text, @"^\\d+$") ,如果其中包含空格,則它將返回false。 但是,如果是這樣的話,為什么不只使用每個文檔中的RequiredFieldValidator並避免編寫自定義代碼呢? 另外,CustomValidator表示強制回發(除非您使用等效的javascript正則表達式指定客戶端驗證腳本)。

嘗試使用Ajax FilteredTextbox,這將不允許有空間。...... http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/FilteredTextBox/FilteredTextBox.aspx

您的問題有點難以理解,但是如果您要問如何編寫只接受數字的常規表達式,我認為您的錯誤是使用正斜杠而不是反斜杠。 嘗試

"\\d+"

RegularExpressionValidator是用於進行正則表達式檢查的很好的包裝器,但不會針對空控件進行驗證。 您可以使用CustomValidator,然后在附加到驗證程序的javascript函數中進行正則表達式檢查。

只要將ValidateEmptyText屬性設置為true,它將針對空(空白)控件進行ValidateEmptyText

您可以在此處閱讀有關MSDN上的CustomValidators的更多信息。

嘗試使用^ \\ d + $強制數字填滿整行。 ^ =行首$ =行尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM