我收到了以下格式的字符串: 名称,艺术家,细节,流派,长度
可以在逗号之间输入任何字符。 到目前为止,我已经做到了这一点,但它似乎无法发挥作用:
if(!Regex.IsMatch(songDetails,@"^([\w]+,)+[\w]+$"))
{
throw new Exception("Enter data into all cells");
}
songDetails是用户输入的字符串输入,我想验证。
我在哪里错了?
编辑: 我应该更具体地说明这个字符串的来源。 我正在从dataGridView中读取值。如果用户将行留空但输入了一个长度值,则会保存数据,但不应该允许它
答案 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");
}