2009-07-06 26 views
5

我想驗證僅包含數字的字符串。容易驗證?我添加了RegularExpressionValidator,並帶有ValidationExpression =「/ d +」。RegularExpressionVididator不在白空間條目上觸發

看起來不錯 - 但沒有驗證只有空間進入!甚至很多空間都可以驗證。我不需要這是強制性的。

我可以在服務器上修剪,但不能正則表達式做所有事情!

回答

11

這是設計並傾向於拋棄很多人。 RegularExpressionValidator不會使字段爲必填字段,並允許它爲空並接受空格。 \ d +格式是正確的。即使使用^ \ d + $也會導致允許空白的問題。強制禁止空白的唯一方法是還包括一個RequiredFieldValidator來操作相同的控件。

這是每次RegularExpressionValidator documentation,其中指出:

驗證成功,如果輸入 控制是空的。如果相關輸入 控制所需的值爲 ,則除 RegularExpressionValidator控件外,還需使用RequiredFieldValidator 控件。

代碼隱藏中字段的正則表達式檢查將按預期工作;這只是RegularExpressionValidator的一個問題。所以你可以想象使用一個CustomValidator來代替args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$"),如果它包含空格,那麼它會返回false。但是,如果是這種情況,爲什麼不根據文檔使用RequiredFieldValidator並避免編寫自定義代碼?另外一個CustomValidator意味着一個強制回傳(除非你指定一個客戶端驗證腳本與等效的JavaScript正則表達式)。

1

你的問題有點難以遵循,但如果你問如何寫一個正規表示只接受數字我認爲你的錯誤是使用正斜槓而不是反斜槓。嘗試

"\d+"

+0

是的,我已經嘗試過。讓我試試解釋一下。 輸入文本框:「55」 - 有效。 「55x」 - 失敗(這很好)。 「 」「 - 有效! (不太好!) – 2009-07-06 05:17:04

+0

好吧,在你的例子中,你說過你使用了「/ d +」,它與正則表達式中的「\ d +」非常不同。您是否嘗試過添加RequiredFieldValidator?這可能會阻止「」合法。不是100%正面,我不聲稱是一個asp.net專家;) – Scanningcrew 2009-07-06 05:22:55

0

嘗試使用^ \ d + $迫使數字填補了整條生產線。 ^ =行開始$ =行結束

+0

IIRC,當使用正則表達式驗證程序時,^和$是隱含的。 – Cerebrus 2009-07-06 05:54:01

1

RegularExpressionValidator是做正則表達式檢查的不錯的包裝,但它不會驗證空控件。您可以使用CustomValidator,然後在附加到驗證器的JavaScript函數中執行正則表達式檢查。

只要您將ValidateEmptyText屬性設置爲true,它就會針對空白(空白)控件進行驗證。

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