Regex (IsMatch, Matches, Replace, GeneratedRegex) în C# (.NET)

.NET BCL și CLI-ul dotnet .NET Framework 1.0 (GeneratedRegex: .NET 7) Q&A / Distribuie cod

Expresii regulate în .NET: verificare cu IsMatch, extragere cu Match/Matches și grupuri, înlocuire cu Replace, modele compilate cu [GeneratedRegex].

Sintaxă C#
Regex.IsMatch(text, @"^07\d{8}$")   Regex.Matches(text, model)   [GeneratedRegex("...")] static partial Regex Model();

Ce face Regex (IsMatch, Matches, Replace, GeneratedRegex)

Clasa System.Text.RegularExpressions.Regex caută modele în text. Modelele se scriu de obicei ca șiruri verbatim @"...", ca backslash-ul să nu trebuiască dublat. IsMatch răspunde da/nu, Match dă prima potrivire, Matches pe toate, Replace înlocuiește, Split taie textul, iar Count (.NET 7) le numără.

Grupurile între paranteze se citesc cu m.Groups[1].Value sau, pentru grupuri cu nume (?<zi>\d{2}), cu m.Groups["zi"].Value. În Replace, $1 sau ${zi} reintroduc grupul în textul nou.

Atributul [GeneratedRegex] (.NET 7) pe o metodă static partial generează la compilare codul de căutare: e mai rapid la pornire și verificat de compilator. E varianta recomandată pentru modele fixe folosite des.

Exemple

Exemplul 1: Verificare, extragere și înlocuire

using System.Text.RegularExpressions;

Console.WriteLine(Regex.IsMatch("0740123456", @"^07\d{8}$"));
Console.WriteLine(Regex.IsMatch("074012", @"^07\d{8}$"));

string text = "Comenzi: #1024 (Ana), #87 (Mihai), #3301 (Ioana)";
foreach (Match m in Regex.Matches(text, @"#(\d+) \((\w+)\)"))
    Console.WriteLine($"{m.Groups[2].Value}: comanda {m.Groups[1].Value}");

Console.WriteLine(Regex.Count(text, @"#\d+"));
Console.WriteLine(Regex.Replace("Tel:  0740 123  456", @"\s+", ""));
Console.WriteLine(Regex.Replace("2026-10-25", @"(\d{4})-(\d{2})-(\d{2})", "$3.$2.$1"));

Rezultat

True
False
Ana: comanda 1024
Mihai: comanda 87
Ioana: comanda 3301
3
Tel:0740123456
25.10.2026

Exemplul 2: [GeneratedRegex] și grupuri cu nume

using System.Text.RegularExpressions;

string[] emailuri = ["ana@exemplu.ro", "mihai@", "ioana.pop@firma.com"];
foreach (string e in emailuri)
    Console.WriteLine($"{e}: {Modele.Email().IsMatch(e)}");

Match m = Modele.Data().Match("Factura din 25.10.2026, scadentă în 30 de zile");
if (m.Success)
    Console.WriteLine($"zi {m.Groups["zi"].Value}, luna {m.Groups["luna"].Value}, an {m.Groups["an"].Value}");

static partial class Modele
{
    [GeneratedRegex(@"^[^@\s]+@[^@\s]+\.[a-z]{2,}$", RegexOptions.IgnoreCase)]
    public static partial Regex Email();

    [GeneratedRegex(@"(?<zi>\d{2})\.(?<luna>\d{2})\.(?<an>\d{4})")]
    public static partial Regex Data();
}

Rezultat

ana@exemplu.ro: True
mihai@: False
ioana.pop@firma.com: True
zi 25, luna 10, an 2026

Greșeli frecvente

  • Model fără ancore: \d{10} se potrivește și în "tel 07401234567890". Pentru validare folosește ^ și $.
  • În șiruri obișnuite (fără @) "\d" nu se compilează; scrie @"\d" sau "\\d".
  • Textul de la utilizator pus direct într-un model poate conține caractere speciale (., *, (). Scapă-l cu Regex.Escape. Pentru date nesigure dă și un matchTimeout.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Regex (IsMatch, Matches, Replace, GeneratedRegex)

Ai o nelămurire despre utilizarea comenzii Regex (IsMatch, Matches, Replace, GeneratedRegex) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.