Freigeben über


CA1874: Verwenden von "Regex.IsMatch"

Eigentum Wert
Regel-ID CA1874
Title Verwende Regex.IsMatch
Kategorie Leistung
Korrektur ist blockierend oder nicht-blockierend Non-breaking
Standardmäßig in .NET 10 aktiviert Als Vorschlag

Ursache

Die Success Eigenschaft des Ergebnisses Regex.Match wird verwendet, um zu überprüfen, ob ein Muster übereinstimmt.

Regelbeschreibung

Regex.IsMatch ist einfacher und schneller als Regex.Match(...).Success. Die IsMatch Methode ist für den Fall optimiert, in dem Sie nur wissen müssen, ob eine Übereinstimmung vorhanden ist und nicht, was die Übereinstimmung ist. Das Aufrufen Match() und anschließende Überprüfen Success funktioniert nicht mehr, was sich auf die Leistung auswirken kann.

Wie man Verstöße behebt

Ersetzen Sie Anrufe durch Regex.Match(...).SuccessRegex.IsMatch(...).

Eine Codekorrektur , die diese Transformation automatisch ausführt, ist verfügbar.

Example

Der folgende Codeausschnitt zeigt einen Verstoß gegen 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

Der folgende Codeausschnitt behebt die Verletzung:

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

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, eine Warnung aus dieser Regel zu unterdrücken, wenn die Leistung kein Problem darstellt.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Deaktivieren Sie die Regel für eine Datei, einen Ordner oder ein Projekt, indem Sie den Schweregrad in der none auf setzen.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch