最初我想要一个解析月份数字的正则表达式。起初我想出了以下正则表达式:
^([1-9]{1})|(1[012])$
它匹配任何正数,表示它匹配数字的高位,即:
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
为什么呢?我认为交替构造将Regex
选择左侧或右侧,同时^
使其&
匹配整个字符串。我错过了什么?
PS:我现在确实有一个有效的正则表达式(仅匹配从 1 到 12 的数字);它的:
^([1-9]{1}|1[012])$
而且我不明白为什么它如此有效....
这是我用来测试的代码:
Regex r = new Regex(@"^([1-9]{1})|(1[012])$");//^([1-9]{1}|1[012])$
for (int i = -5; i < 35; i++)
{
Console.Write(i);
Console.Write("\t");
Match m = r.Match(i.ToString());
if (m.Success)
Console.WriteLine(m.Groups[0].Value);
else
Console.WriteLine("false");
}