尝试以[1-9]格式匹配用户输入,空格,[1-9]
所以
1 1应该通过
1 0应该失败
new Regex(@"^[1-9]+\s+\d+").IsMatch(input) //works but allows 0 for the 2nd number
new Regex(@"^[1-9]+\s+\[1-9]+").IsMatch(input) //does not work for some reason
我觉得我错过了一些超级基本的东西,但我无法找到答案。
答案 0 :(得分:0)
您的正则表达式都无法正常工作。 ^[1-9]+\s+\d+
模式匹配从1
到9
的1+位数,然后是1 +个空格,然后是任意数字,可以跟随任何数字,任意数量的任何字符。 ^[1-9]+\s+\[1-9]+
模式包含转发的[
,而不是匹配1
到9
的任何1位数,而[1-9]
与\[1-9]+
匹配[
{1}},然后是1-9
子字符串,然后是1 + ]
个字符。
如果您计划匹配由1 +个空格分隔的单个非零数字组成的字符串,请使用@"^[1-9]\s+[1-9]$"
。请参阅this regex demo。
如果您计划匹配一个字符串,该字符串由两个数字块组成,而不是以0
开头并用1个或多个空格字符分隔,请使用
@"^[1-9][0-9]*\s+[1-9][0-9]*$"
请参阅regex demo。请注意$
是字符串锚点的结尾,它几乎不允许任何字符(它在字符串的末尾允许\n
,因此,您可能想要使用\z
而不是$
)。
模式详情
^
- 字符串开头[1-9]
- 1
,2
... 9
[0-9]*
- 零或更多digtis \s+
- 1+空白字符[1-9][0-9]*
- 见上文$
/ \z
- 字符串结尾/字符串锚点的结尾。