我要寻找一个正则表达式匹配n个零,然后在1 例如:正则表达式N 0再1
0000100 -> matches
00200 -> does not math
我以为这是类似的东西:
var regex = new Regex(@"[0]*[2-9]+");
我要寻找一个正则表达式匹配n个零,然后在1 例如:正则表达式N 0再1
0000100 -> matches
00200 -> does not math
我以为这是类似的东西:
var regex = new Regex(@"[0]*[2-9]+");
的LINQ解决方案(没有正则表达式):
string source = "0001";
bool isValid = source
.SkipWhile(c => c == '0')
.FirstOrDefault() == '1';
如果你坚持的正则表达式:
bool isValid = Regex.IsMatch(source, "^0*1");
在这两种情况下零以上0
之后1
^[0]+[1]
是你想要什么:
^
线开始
[0]
匹配0
+
至少一次
[1]
比赛1
你也可以在最后加一个$
,如果你想匹配的完整产品线。
注意:如果你想能够匹配n = 0时(即只是1),你需要: ^[0]*[1]
注:括号[]
是可选的,因为它们只包含一个字,但我认为他们使阅读更容易。例如,如果您愿意,您可以使用^0+1
。
参见http://regexstorm.net/reference(例如)一个完整的C#正则表达式参考
我不认为OP希望1在行尾(根据提供的匹配示例) – UnholySheep
为什么必须使用'[]'? –
@UnholySheep刚刚注意到,更新了我的答案。谢谢 – simonalexander2005
没有必要正则表达式的位置:从0
左修剪字符串,如果它不为空或空,检查的第一个字符。
var s = "00001";
if (!string.IsNullOrEmpty(s.TrimStart('0')) &&
s.TrimStart('0').Substring(0, 1) == "1")
{
/* Valid, otherwise, not */
}
如果你有在字符串开头的数字,只是需要一个布尔结果,这将工作。
你正则表达式匹配零个或多个0,后跟一个或多个从2到9的任意一个数字。这听起来像是你想要做的相反 – UnholySheep
你的正则表达式中的'1'在哪里? – Heinzi
你是什么意思的n零?是定义的还是任意数量的零? – Prajwal