C# 正则表达式n0,然后是1

C# 正则表达式n0,然后是1,c#,regex,C#,Regex,我正在寻找一个正则表达式来匹配n个零和1。 例如: 我以为是这样的: var regex = new Regex(@"[0]*[2-9]+"); ^[0]+[1]是您想要的: ^行的开头 [0]匹配0 +至少一次 [1]匹配1 如果希望它与完整的行匹配,还可以在末尾添加一个$ 注意:如果您希望能够匹配n=0(即仅匹配1),则需要: ^[0]*[1] 注意:括号[]是可选的,因为它们只包含一个字符,但我认为它们更易于阅读。例如,如果您愿意,您可以选择^0+1 另请参见(例如)完整的C#regex

我正在寻找一个正则表达式来匹配n个零和1。 例如:

我以为是这样的:

var regex = new Regex(@"[0]*[2-9]+");

^[0]+[1]
是您想要的:

^
行的开头

[0]
匹配0

+
至少一次

[1]
匹配1

如果希望它与完整的行匹配,还可以在末尾添加一个
$

注意:如果您希望能够匹配n=0(即仅匹配1),则需要:
^[0]*[1]

注意:括号
[]
是可选的,因为它们只包含一个字符,但我认为它们更易于阅读。例如,如果您愿意,您可以选择
^0+1


另请参见(例如)完整的C#regex参考

此处不需要regex:从
0
左修剪字符串,如果该字符串不为null或空,请检查第一个字符

var s = "00001";
if (!string.IsNullOrEmpty(s.TrimStart('0')) &&
     s.TrimStart('0').Substring(0, 1) == "1") 
{ 
    /* Valid, otherwise, not */ 
}
如果您在字符串的开头有数字,并且只需要一个布尔结果,那么这将起作用。

Linq解决方案(没有正则表达式):

如果您坚持使用正则表达式:

bool isValid = Regex.IsMatch(source, "^0*1");

在这两种情况下,0个或多个
0
后跟
1

正则表达式匹配0个或多个0,后跟一个或多个从2到9的数字。这听起来和你想做的正好相反这里是正则表达式中的
1
?你说的n个零是什么意思?这是定义的还是任意数量的零?是
1
01bla-bla
有效字符串吗?我认为OP不希望1位于行的末尾(根据提供的匹配示例),为什么必须使用
[]
?@UnholySheep刚刚注意到,更新了我的答案。Thanks@T仅仅是习惯——让事情变得更清楚了。我以前从未读过任何这样的文件。无需按
[]
换行单个字符,除非您希望忽略它:
[^0]
string source = "0001";

bool isValid = source
  .SkipWhile(c => c == '0')
  .FirstOrDefault() == '1';
bool isValid = Regex.IsMatch(source, "^0*1");