2010-11-30 54 views
4

我遇到了一個非常簡單的正則表達式的問題。.Net多行正則表達式限制爲整數

我想限制在一個多行文本框中的條目只是整數。正則表達式我在單行模式下工作正常(對於單行文本框,不使用多行選項),但允許字符在多行模式下蠕變,但只有一次輸入新行。

我的代碼(C#)是一樣的東西:

Regex regExpr = new Regex("^(\d*)$", RegexOptions.Multiline) 
return regExpr.IsMatch(testString); 

我想下面的例子是有效的:

1 

1\\n 

1\\n2\\n3 

我想以下爲無效

A 

A1\\n2 

1\\n2\\nA3 

提前致謝。

回答

0

什麼

(\d?\\n*)? 
+0

這似乎並沒有限制我的輸入。它是否缺少開始和結束標記? – Darren 2010-11-30 14:23:12

+0

你說得對,對不起我的錯誤。試試這個:^(\\ d + \\ n *)+ $ – Nicolas 2010-11-30 14:55:07

0

是否要破壞性地刪除阿爾法或只是發回給用戶重新輸入信息?

刪除只是做一個搜索替換與一個空的結果。

[^\d\n]

要檢查,看看是否有比一些其他任何東西,\ n做只在第一次出現錯誤頁面提交,併發送回用戶同樣的事情。

因爲我不知道你使用的是哪個.Net lang,所以我只能給出一般原則。

+0

我在一個WPF應用程序中使用C#。我只想返回IsMatch調用的結果。我已經編輯了我的問題。 – Darren 2010-11-30 14:28:06

1

可以匹配數字和換行符用:

Regex regExpr = new Regex("[\d\n]*", RegexOptions.Multiline) 

這將匹配任何數量的數字和換行符。如果你只是想確保輸入的文本不具有非數字,然後用

Regex regExpr = new Regex("[\D\S]", RegexOptions.Multiline) 

,如果它匹配,那麼你有一個非法入境。