Usando construções de alternância e agrupamento
Originalmente, eu queria números de mês de análise regular. No começo eu encontrei o seguinte regex:
^([1-9]{1})|(1[012])$
e correspondia a qualquer número positivo, dizendo que correspondia ao dígito de alta ordem do número, ou seja:
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
Por que? Eu pensei que a construção de alternância fariaRegex
escolha a esquerda ou a direita, tendo^
e&
faz com que corresponda a toda a cadeia. o que estou perdendo?
P.S .: Eu tenho um regex de trabalho agora (um que combina apenas números de 1 a 12); Está:
^([1-9]{1}|1[012])$
E eu não entendo porque isso funciona ....
Este é o código que usei para testar:
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");
}