2013-04-06 125 views
1

我有一个字符串,我需要验证其有效性,以前者,如果:净正则表达式逗号分隔字符串,其严格的格式

  • 这完全是空的
  • 或者包含逗号分隔的字符串,必须如下所示:'abc,def,ghi,jkl'。

这些逗号分隔值有多少并不重要,但是如果字符串不是空的,它必须坚持逗号(且只有逗号)分隔的格式,而且它们周围没有空格,并且每个值可能只包含ascii az/Az ..没有特殊字符或任何东西。

我将如何验证字符串是否遵守规则,或不?

回答

8

你可以使用这个表达式

^([a-zA-Z]+(,[a-zA-Z]+)*)?$ 

^(?!,)(,?[a-zA-Z])*$ 

^是字符串

[a-zA-Z]的开始是一个字符类匹配一个大写 lowerca SE字母

+是量词,其前面的字符或组1匹配多次

*是其前面的字符或组0匹配量词多次

?是量词与前面的字符或组相匹配0或1次

$是字符串

+0

我希望我能+2您抽出宝贵的时间来解释每个令牌。 :) – 2013-04-06 11:45:48

+0

@ChrisSinclair谢谢克里斯... – Anirudha 2013-04-06 15:28:22

+0

Woohoo - 谢谢 - 很多 - @The_Land_Of_Devils_SriLanka!特别是对于伟大的,很好的解释! – 2013-04-06 22:33:46

1

末使用正则表达式考虑

bool isOK = str == "" || str.Split(',').All(part => part != "" && part.All(c=> (c>= 'a' && c<='z') || (c>= 'A' && c<='Z')));

相关问题