我有以下简单的测试,由于某种原因不会返回true。
string[] test = new string[] { "A", " ", " ", "D", "" };
Regex reg = new Regex(@"^[A-Z]\s$");
bool ok = test.All(x => reg.IsMatch(x));
我也尝试将\ s放在方括号内但不起作用
我想确保数组中非空或空格的所有字符都与A-Z匹配。
我意识到我可以在All之前做一个Where(x =>!String.IsNullorEmpty(x)&& x!=“”),但我认为Regex可以处理这种情况
答案 0 :(得分:5)
我想你想要:
Regex reg = new Regex(@"^[A-Z\s]*$");
基本上说“字符串完全由空格或A-Z组成”。
如果您想将其强制为单个字符或为空,请将其更改为:
Regex reg = new Regex(@"^[A-Z\s]?$");
答案 1 :(得分:1)
Enumerable.All<TSource> Method
确定序列的所有元素是否满足条件。
答案 2 :(得分:0)
正则表达式^[A-Z]\s$
表示:双字符串,第一个字符为A-Z
,第二个字符为空格。你真正想要的是^[A-Z\s]*$
。