我想检测一个IBAN
帐户是否包含zero
0
的所有数字,例如
00 0000 000 00 0000000000
。
所以我构建了这个正则表达式模式来检查它:
^(0\s){0,25}$
参数是:检查输入字符串是否只有空格或零。
但这不起作用。有帮助吗?谢谢。
答案 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}$