2014-01-14 44 views
0

我有以下的正則表達式,在ASP.NET RegularExpressionValidator使用:如何編寫允許2位小數和空格的正則表達式,但沒有空格?

^\ d *(?\ d [0-9])$

這種表達沒有我需要的一切,除了預防僅輸入空格。它將輸入限制爲0,1或2位數字,並且不允許數字內部或後面的空格。它允許該字段爲空(根本不輸入任何內容)。

我想阻止用戶輸入空格,因爲我意識到有時候用戶會用空格鍵而不是刪除鍵來清除字段的值。

但是,由於某種原因,它只允許輸入空格,就像它認爲空格(或空格)等於空白字段(空)一樣。我錯過了什麼?

編輯:添加^字符到表達式的開頭,複製到這個問題時錯過了它。

+0

好像正則表達式你想要做什麼,以及它使用的代碼它允許空格而不管正則表達式。 – tripleee

+0

我認爲這是.NET的RegularExpressionValidator問題。我可以刪除背面代碼中的空格,但希望能夠使其工作以防止空格int在第一位。似乎奇怪的是,.NET會導致它的行爲。 – BeachBum

+0

另外,我想它允許一個空白字段。我只是不希望它允許空間字符。兩件不同的事情。 – BeachBum

回答

0

如果從0到3個數字只需要我建議你用這個代替

^\d*(\.\d{1,2})?$ 

這說明從字符串的開頭只能有0,1個或2位數字,並沒有其他的字符。你錯過了從字符串開頭的檢查,我認爲

編輯:

我這裏http://regex101.com/r/hC1dL6測試您的正則表達式,它不會產生問題...我認爲這是可能的輸入到達之前修剪你的正則表達式。我建議你以這種方式進行測試。當有在外地 驗證的內容

EDIT2

here

字段驗證只火。要檢查一個字段是否有數據,並且日期是否正確,您需要使用 來使用兩個驗證器。所需的字段驗證程序將確保輸入數據 ,並且您的第二個驗證程序(例如驗證程序的正則表達式 )將確保輸入的數據採用所需的 格式。

建議使用兩個驗證器。

+0

對不起,我的部分複製粘貼工作不好。我真的在表達式前面有^字符。我不想限制字符數,除了最多2位小數。 – BeachBum

0

您的新的正則表達式:

^(|\d+(\.\d{1,2})?)$ 

說明:

  • ^設置一個起點錨。它會使space失效。
  • 它驗證空白。
  • 它無效格式不正確的號碼,如12..12
  • 要禁用「捕獲組」(獲得更好的性能等),使用:^(?:|\d+(?:\.\d{1,2})?)$
+0

我嘗試了您提供的兩個表達式,但它仍然允許空格,除非它們是包含其他字符的輸入的一部分。 – BeachBum

+0

@BeachBum我的測試不會返回空格匹配。 http://regex101.com/r/eX5bR5你可以發佈你的實際正則表達式測試代碼? – Kita

+0

無論是在正則表達式測試程序中,它都不會爲空格返回匹配項。對於這個問題,我的原始表達也沒有。我想這個問題是在使用RegularExpressionValidator的ASP.NET頁面中的問題。所以出於某種原因,該控件的行爲有點不標準。 – BeachBum

相關問題