Patrones de regex con rangos corregidos
Regex controla incorrectamente el uso de mayúsculas y minúsculas de algunos intervalos en .NET Framework y en .NET 6 y versiones anteriores. Este error se corrigió en .NET 7.
La corrección de este error podría provocar un cambio importante si la expresión regular tiene un error que se ocultó a consecuencia de este o si implementó una solución alternativa para este error.
Comportamiento anterior
En .NET 6 y versiones anteriores, los dos patrones siguientes generan resultados diferentes. Sin embargo, deben producir el mismo resultado (false
), ya que el intervalo \xD7-\xD8
solo incluye los valores \xD7
y \xD8
propiamente dichos.
// Evaluates to false.
Regex.IsMatch("\xF7", @"^(?i:[\xD7\xD8])$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
// Evaluates to true.
Regex.IsMatch("\xF7", @"^(?i:[\xD7-\xD8])$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Comportamiento nuevo
A partir de .NET 7, los patrones de ejemplo se evalúan como false
.
// Evaluates to false.
Regex.IsMatch("\xF7", @"^(?i:[\xD7\xD8])$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
// Evaluates to false.
Regex.IsMatch("\xF7", @"^(?i:[\xD7-\xD8])$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Versión introducida
.NET 7
Tipo de cambio importante
Este es un cambio de comportamiento.
Motivo del cambio
El comportamiento anterior era incorrecto.
Acción recomendada
Si la expresión regular tiene un error oculto, corrijalo. Si tiene una solución alternativa para este error, puede quitarla.
API afectadas
- System.Text.RegularExpressions.Regex.Count
- System.Text.RegularExpressions.Regex.EnumerateMatches
- System.Text.RegularExpressions.Regex.IsMatch
- System.Text.RegularExpressions.Regex.Match
- System.Text.RegularExpressions.Regex.Matches
- System.Text.RegularExpressions.Regex.Replace
- System.Text.RegularExpressions.Regex.Split
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de