1

我有以下格式的字符串:名称,艺术家,详细信息,流派,长度

逗号之间可以输入任何字符。到目前为止我已经做到了,但它似乎不起作用:

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

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

我哪里错了?

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

4

2 回答 2

9

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

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

if(songDetailsArray.Length != 5)
{
     throw new Exception("Enter data into all cells");
}
于 2013-04-01T15:00:31.453 回答
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");
}
于 2013-04-01T15:05:53.510 回答