Uso de construcciones de alternancia y agrupación.
Originalmente quería un número de meses de análisis de expresiones regulares. Al principio se me ocurrió el siguiente regex:
^([1-9]{1})|(1[012])$
y coincidió con cualquier número positivo, diciendo que coincidía con el dígito de orden superior del número, es decir:
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
¿Por qué es así? Pensé que la construcción de alternancia haráRegex
Elija la izquierda o la derecha, mientras que tiene^
y&
hace que coincida con toda la cadena. ¿Qué me estoy perdiendo?
P.S .: Tengo una expresión regular de trabajo ahora (una que coincide con los números del 1 al 12 solamente); sus:
^([1-9]{1}|1[012])$
Y no puedo entender por qué funciona así ...
Este es el código que solía probar:
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");
}