MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Przykłady wyrażeń regularnych

 

Przykłady

Poniższe przykłady prezentują niektóre użycia wyrażeń regularnych.

Zmiana kolejności w łańcuchu znaków wejścia

Następujący przykład ilustruje tworzenie wyrażeń regularnych i użycie string.split() i string.replace(). Czyści on bezwzględnie wejściowy łańcuch znaków zawierający imiona (pierwsze imię jest pierwsze) oddzielone odstępem, tabulatorem i dokładnie jednym średnikiem. Na koniec odwraca on kolejność imion (ostatnie imię jest pierwsze) i sortuje listę.

<script type="text/javascript">

// Łańcuch znaków z imionami zawiera wiele spacji i tabulatorów,
// może również zawierać wiele spacji pomiędzy pierwszym a ostatnim imieniem.
var imiona = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";

var output = new Array(
  "---------- Oryginalny łańcuch znaków<br><br>",
  imiona + "<br><br>");

// Przygotuj dwa wzorce wyrażeń regularnych i tablicę do przechowywania.
// Podziel łańcuch na elementy tablicy.

// wzorzec: możliwe białe znaki, następnie średnik, potem znów możliwe białe
var wzor = /\s*;\s*/;

// Rozbij łańcuch znaków na części oddzielone przez powyższy wzorzec
// i przechowaj je w tablicy o nazwie listaImion
var listaImion = imiona.split(wzor);

// Nowy wzorzec: jeden lub więcej znaków, następnie spacje, następnie znów znaki.
// Użyj nawiasów, by "zapamiętać" porcje wzorca.
// Zapamiętane porcje przydadzą się później.
var wzor = /(\w+)\s+(\w+)/;

// Nowa tablica do przechowywania przetwarzanych imion.
var ListaWgNazwisk = new Array();

// Wyświetl nazwę tablicy i wypełnij nową tablicę
// imionami oddzielonymi za pomocą przecinka, zaczynając od ostatniego.
//
// Metoda "zamien" usuwa wszystko pasujące do wzorca
// i zamienia to z zapamiętanymi porcjami.
//
// Zmienne $1 i $2 odwołują się do zapamiętanych porcji
// podczas porównywania wzorca.

output.push("---------- Po rozdzieleniu przez wyrażenie regularne<BR>");

var i, len;
for (i = 0, len = listaImion.length; i < len; i++)
{
  output.push(nameList[i] + "<br>");
  ListaWgNazwisk[i] = listaImion[i].replace(wzor, "$2, $1")
}

// Wyświetl nową tablicę.
output.push("---------- Odwrócone imiona<br>");
for (i = 0, len = ListaWgNazwisk.length; i < len; i++)
{
  output.push(ListaWgNazwisk[i] + "<br>")
}

// Sortuj według ostatniego imienia, następnie wyświetl posortowaną tablicę.
ListaWgNazwisk.sort();
output.push("---------- Posortowano<br>");
for (i = 0, len = ListaWgNazwisk.length; i < len; i++)
{
  output.push(ListaWgNazwisk[i] + "<br>")
}

output.push("---------- Koniec<br>");

document.write(output.join("\n"));

</script>

Używanie specjalnych znaków do sprawdzenia wejścia

W następującym przykładzie, użytkownik wprowadza numer telefonu. Gdy użytkownik naciśnie klawisz Enter, skrypt sprawdzi poprawność numeru. Jeśli numer jest poprawny (pasuje do sekwencji znaków określonej przez wyrażenie regularne), skrypt wywoła okno z podziękowaniem użytkownikowi i zatwierdza numer. Jeśli numer nie jest poprawny, skrypt wywoła okno informacji o nieprawidłowym numerze telefonu.

Wyrażenie regularne szuka zera lub jednego nawiasu otwartego \(?, po którym następują trzy cyfry \d{3}, następnie znów zero lub jeden nawias zamknięty \)?, potem jednego myślnika, ukośnika lub znaku dziesiętnego, a gdy je znajdzie zapamiętuje znaki (-\\/\\.), następujące po nich trzy cyfry i ciąg składający się z myślnika, ukośnika lub znaku dziesiętnego \1 i następujących potem czterech cyfr \d{4}.

Zdarzenie Change zostaje aktywowane, kiedy użytkownik naciśnie klawisz Enter ustawiając wartość RegExp.input.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <script type="text/javascript">
      var re = /\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/;

      function testInfo(phoneInput)
      {
        var OK = re.exec(phoneInput.value);

        if (!OK)
        {
          window.alert(RegExp.input + " nie jest wprowadzony numerem kierunkowy!");
        }
        else
        {
          window.alert("Dziękuję, Twój numer telefonu to " + OK[0]);
        }
      }
    </script>
  </head>

  <body>
    <p>Wprowadź numer telefonu (z numerem kierunkowym), a następnie naciśnij klawisz Enter.</p>
    <form action="">
      <input name="phone" onchange="testInfo(this);">
    </form>
  </body>
</html>

 

Autorzy i etykiety dokumentu

 Autorzy tej strony: teoli, Mgjbot, Diablownik, Ptak82
 Ostatnia aktualizacja: teoli,