正则表达式n 0然后是1

时间:2016-11-25 10:33:36

标签: c# regex

我正在寻找一个正则表达式来匹配n个零,然后是1。 E.g:

0000100 -> matches
00200 -> does not math

我认为是这样的:

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

3 个答案:

答案 0 :(得分:4)

^[0]+[1]就是你想要的:

^行开头

[0]匹配0

+至少一次

[1]匹配1

如果您希望匹配整行,也可以在末尾添加$

注意:如果你想匹配n = 0(即只是1),你需要: ^[0]*[1]

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

另请参阅http://regexstorm.net/reference(例如)了解完整的C#正则表达式参考

答案 1 :(得分:2)

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

string source = "0001";

bool isValid = source
  .SkipWhile(c => c == '0')
  .FirstOrDefault() == '1';

如果你坚持正则表达式:

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

在两种情况下或更多0后跟1

答案 2 :(得分:1)

这里不需要正则表达式:从0左边修剪字符串,如果它不是空或空,请检查第一个字符。

var s = "00001";
if (!string.IsNullOrEmpty(s.TrimStart('0')) &&
     s.TrimStart('0').Substring(0, 1) == "1") 
{ 
    /* Valid, otherwise, not */ 
}

如果您在字符串的开头有数字并且只需要一个布尔结果,这将有效。