Číst v angličtině

Sdílet prostřednictvím


Příklad regulárního výrazu: Změna formátů kalendářních dat

Následující příklad kódu používá metodu Regex.Replace k nahrazení kalendářních dat, které mají formulář mm/dd/yy s kalendářními daty, které mají formulář dd-mm-yy.

Upozornění

Při zpracování System.Text.RegularExpressions nedůvěryhodného vstupu předejte vypršení časového limitu. Uživatel se zlými úmysly může poskytnout vstup RegularExpressions, což způsobí útok na dostupnost služby. ASP.NET rozhraní API architektury Core, která používají RegularExpressions vypršení časového limitu.

Příklad

static string MDYToDMY(string input)
{
   try {
      return Regex.Replace(input,
             @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
            "${day}-${month}-${year}", RegexOptions.None,
            TimeSpan.FromMilliseconds(150));
   }
   catch (RegexMatchTimeoutException) {
      return input;
   }
}

Následující kód ukazuje, jak lze metodu MDYToDMY volat v aplikaci.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Class1
{
   public static void Main()
   {
      string dateString = DateTime.Today.ToString("d",
                                        DateTimeFormatInfo.InvariantInfo);
      string resultString = MDYToDMY(dateString);
      Console.WriteLine("Converted {0} to {1}.", dateString, resultString);
   }

   static string MDYToDMY(string input)
   {
      try {
         return Regex.Replace(input,
                @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
               "${day}-${month}-${year}", RegexOptions.None,
               TimeSpan.FromMilliseconds(150));
      }
      catch (RegexMatchTimeoutException) {
         return input;
      }
   }
}
// The example displays the following output to the console if run on 8/21/2007:
//      Converted 08/21/2007 to 21-08-2007.

Komentáře

Vzor \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b regulárního výrazu je interpretován, jak je znázorněno v následující tabulce.

Vzor Popis
\b Začne porovnání na hranici slova.
(?<month>\d{1,2}) Porovná jednu nebo dvě desítkové číslice. Toto je month zachycená skupina.
/ Porovná značku lomítka.
(?<day>\d{1,2}) Porovná jednu nebo dvě desítkové číslice. Toto je day zachycená skupina.
/ Porovná značku lomítka.
(?<year>\d{2,4}) Porovná se ze dvou až čtyř desetinných číslic. Toto je year zachycená skupina.
\b Ukončí porovnání na hranici slova.

${day}-${month}-${year} Vzor definuje náhradní řetězec, jak je znázorněno v následující tabulce.

Vzor Popis
$(day) Přidejte řetězec zachycený day skupinou zachycení.
- Přidání spojovníku
$(month) Přidejte řetězec zachycený month skupinou zachycení.
- Přidání spojovníku
$(year) Přidejte řetězec zachycený year skupinou zachycení.

Viz také