正则表达式验证逗号分隔的字符串

时间:2013-04-01 14:58:09

标签: c# regex

我收到了以下格式的字符串: 名称,艺术家,细节,流派,长度

可以在逗号之间输入任何字符。 到目前为止,我已经做到了这一点,但它似乎无法发挥作用:

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

songDetails是用户输入的字符串输入,我想验证。

我在哪里错了?

编辑: 我应该更具体地说明这个字符串的来源。 我正在从dataGridView中读取值。如果用户将行留空但输入了一个长度值,则会保存数据,但不应该允许它

2 个答案:

答案 0 :(得分:9)

检查拆分结果的长度可能比使用正则表达式更简单。

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

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

答案 1 :(得分: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");
}