【发布时间】:2013-04-06 11:18:07
【问题描述】:
我有一个字符串需要验证其有效性,如果:
- 完全是空的
- 或包含逗号分隔的字符串,必须如下所示:'abc,def,ghi,jkl'。
这些逗号分隔值中有多少并不重要,但如果字符串不为空,它必须遵守逗号(并且只有逗号)分隔格式,它们周围没有空格,并且每个值都可以只包含 ascii a-z/A-z.. 没有特殊字符或任何东西。
如何验证字符串是否符合规则?
【问题讨论】:
我有一个字符串需要验证其有效性,如果:
这些逗号分隔值中有多少并不重要,但如果字符串不为空,它必须遵守逗号(并且只有逗号)分隔格式,它们周围没有空格,并且每个值都可以只包含 ascii a-z/A-z.. 没有特殊字符或任何东西。
如何验证字符串是否符合规则?
【问题讨论】:
你可以使用这个正则表达式
^([a-zA-Z]+(,[a-zA-Z]+)*)?$
或
^(?!,)(,?[a-zA-Z])*$
^ 是字符串的开头
[a-zA-Z] 是匹配单个大写或小写字母
+ 是一个量词,它匹配前面的字符或组1到多次
* 是一个量词,它匹配前面的字符或组0到多次
? 是一个量词,它匹配前面的字符或组0 或 1 次
$ 是字符串的结尾
【讨论】:
考虑不使用正则表达式:
bool isOK = str == "" || str.Split(',').All(part => part != "" && part.All(c=> (c>= 'a' && c<='z') || (c>= 'A' && c<='Z')));
【讨论】: