Compartir a través de


CA1874: Usar 'Regex.IsMatch'

Propiedad Importancia
Identificador de la regla CA1874
Título Utilice Regex.IsMatch
Categoría Rendimiento
La corrección es disruptiva o no disruptiva Non-breaking
Habilitado de forma predeterminada en .NET 10 Como sugerencia

Causa

La Success propiedad del resultado de Regex.Match se usa para comprobar si un patrón coincide.

Descripción de la regla

Regex.IsMatch es más sencillo y más rápido que Regex.Match(...).Success. El IsMatch método está optimizado para el caso en el que solo es necesario saber si existe una coincidencia, en lugar de lo que es la coincidencia. La llamada Match() y, a continuación, la comprobación Success realiza un trabajo innecesario que puede afectar al rendimiento.

Cómo corregir infracciones

Reemplace las llamadas a por Regex.Match(...).SuccessRegex.IsMatch(...).

Hay disponible una corrección de código que realiza automáticamente esta transformación.

Example

El fragmento de código siguiente muestra una infracción de CA1874:

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Violation
        return Regex.Match(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$").Success;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Violation
        Return Regex.Match(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$").Success
    End Function
End Class

El siguiente fragmento de código corrige la infracción:

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Fixed
        return Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Fixed
        Return Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$")
    End Function
End Class

Cuándo suprimir las advertencias

Es seguro suprimir una advertencia de esta regla si el rendimiento no es un problema.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.

Consulte también