Использование чередующихся и группирующих конструкций
Первоначально я хотел, чтобы регулярные числа анализировали числа месяцев. Сначала я придумал следующее регулярное выражение:
^([1-9]{1})|(1[012])$
и оно совпадало с любым положительным числом, говоря, что оно совпадает с старшей цифрой числа, т.е.
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
Почему это так? Я думал, что конструкция чередования сделаетRegex
выберите левую или правую, имея^
а также&
делает это соответствовать всей строке. Чего мне не хватает?
П.С .: У меня сейчас есть рабочее регулярное выражение (которое соответствует числам только от 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");
}