2013-04-01 276 views
1

我有在以下格式的字符串: 名稱,藝術家,細節,流派,長度正則表達式來驗證逗號分隔字符串

任何字符可以逗號之間輸入。 我到目前爲止做出這一點,但它似乎不工作:

if(!Regex.IsMatch(songDetails,@"^([\w]+,)+[\w]+$")) 
{ 
throw new Exception("Enter data into all cells"); 
} 

songDetails是字符串輸入的用戶進入,我想驗證。

我要去哪裏錯了呢?

編輯: 我應該在此字符串是來自更具體。 我正在讀取dataGridView的值。如果用戶離開該行空白,但進入長的值,該數據被保存,但它不應該允許它

+0

*。*「的任何字符可以逗號之間輸入」 - 即使是一個逗號? – GolfWolf

+0

另外:你試圖用Regex實現的邏輯是什麼?什麼不起作用? – GolfWolf

+0

我試圖檢查用戶輸入數據到DataGridView的所有單元格。我遇到的問題是,如果用戶輸入了一些東西,數據將被保存。這不應該發生。 – Pindo

回答

9

它很可能是簡單的檢查結果裂的長度比使用正則表達式。

var songDetailsArray = songDetails.Split(","); 

if(songDetailsArray.Length != 5) 
{ 
    throw new Exception("Enter data into all cells"); 
} 
+4

正如名言去... _Some人,當遇到一個問題,認爲「我知道,我將使用正則表達式。」現在他們有兩個problems._ – Artless

+0

謝謝! 我猜正則表達式只適用於驗證字符串的一些事情。 – Pindo

1

嘗試刪除括號:

if(!Regex.IsMatch(songDetails,@"^(\w+,)+\w+$")) 
{ 
    throw new Exception("Enter data into all cells"); 
} 

\ W已經是一個字符類。如果空白被允許過,試試這個:

if(!Regex.IsMatch(songDetails,@"^((\w|\s)+,)+(\w|\s)+$")) 
{ 
    throw new Exception("Enter data into all cells"); 
} 
相關問題