检查字符串是否只有空格或带有C#的零

时间:2014-06-19 17:18:30

标签: c# regex

我想检测一个IBAN帐户是否包含zero 0的所有数字,例如

00 0000 000 00 0000000000

所以我构建了这个正则表达式模式来检查它:

^(0\s){0,25}$

参数是:检查输入字符串是否只有空格或零。

但这不起作用。有帮助吗?谢谢。

5 个答案:

答案 0 :(得分:3)

这是一个非正则表达式的例子。

string input = "00 0000 000 00 0000000000";

bool isNotAllZeros = input
    .Where(x => char.IsDigit(x))
    .Any(x => x != '0');

它说:"从字符串中获取所有数字,并查看是否有任何数字' 0'。"

使用All的另一种方法(避免双重否定),这在阅读时可能更有意义:

bool isAllZeros = input
    .Where(x => char.IsDigit(x))
    .All(x => x == '0');

这说"是输入中的所有数字' 0'?"

答案 1 :(得分:2)

您可以使用or运算符|

^(0|\s){0,25}$

或者,您可以使用字符类:

^[0\s]{0,25}$

忘记以上。你可以这样做:

string input = "00 0000 000 00 0000000000";
bool isAllNum = input.IndexOf(" ") == -1; //true if all are numbers without space

答案 2 :(得分:2)

如果您要检查0或空格,请将0和空格字符添加到character class。如果您想匹配(\n\r\t\f' '),请使用\s

^[0 ]{0,25}$

答案 3 :(得分:2)

处理此问题的一种非常有效的方法是:

string input = "00 0000 000 00 0000000000";

bool isAllZero = input.Any(i => i != ' ' && i != '0');

将停止在非空格,非零字符的第一个实例上执行。

答案 4 :(得分:1)

如果你想保留格式,请试试这个正则表达式

^[0]{2}\s[0]{4}\s[0]{3}\s[0]{2}\s[0]{10}$

OR

^0{2}\s0{4}\s0{3}\s0{2}\s0{10}$

DEMO