Przejdź do głównej treści

Regexp tester

Regexp

Opanuj wyrażenia regularne z moją aplikacją do testowania!

Chcesz przetwarzać i analizować tekst jak prawdziwy mistrz danych? Wyrażenia regularne (RegEx) to klucz do szybkiego wyszukiwania, filtrowania i manipulowania informacjami w ogromnych zbiorach danych. Dzięki mojej aplikacji do testowania RegEx możesz bez trudu zgłębiać ich tajniki i od razu zobaczyć efekty swojej pracy!

Dlaczego warto nauczyć się wyrażeń regularnych?

  • Wszechstronność: Idealne do automatyzacji zadań w programowaniu, analizie danych i administracji.
  • Efektywność: Przeszukuj, zamieniaj i manipuluj tekstem w mgnieniu oka.
  • Praktyczne testowanie na żywo: Moja aplikacja umożliwia natychmiastowy podgląd dopasowań i błędów.
  • Wsparcie dla różnych formatów: Pracuj z plikami tekstowymi, kodem, logami i wieloma innymi źródłami danych.

Dla kogo?

  • Programistów, którzy chcą pisać lepszy kod
  • Specjalistów IT i analityków danych
  • Pasjonatów automatyzacji procesów
  • Każdego, kto chce oszczędzać czas w pracy z tekstem

Nie trać czasu na ręczne wyszukiwanie danych! Z moją aplikacją szybko opanujesz sztukę RegEx i przyspieszysz swoją pracę.

Zacznij teraz i przekonaj się, jak łatwo możesz zostać ekspertem od wyrażeń regularnych!

Wskazówka

Aplikacja obsługuje wyrażenia regularne PCRE przy użyciu funkcji preg_match_all. Każde wyrażenie regularne musi się zaczynać i kończyć znakami / np. /^\d+$/

Przykłady wyrażeń regularnych (PCRE) z tekstem testowym

  1. Wyszukiwanie adresów e-mail

Wyrażenie:

/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/  

Tekst testowy:

Kontakt: jan.kowalski@example.com lub support@firma123.pl  
Niepoprawny: user@domain, mail@.com  
  1. Dopasowanie dat w formacie YYYY-MM-DD

Wyrażenie:

/\b\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b/  

Tekst testowy:

Poprawne daty: 2023-04-15, 2025-12-01  
Niepoprawne: 2023-13-01, 2023-02-30  
  1. Wyszukiwanie numerów telefonów (format PL)

Wyrażenie:

/\b\d{3}[- ]?\d{3}[- ]?\d{3}\b/  

Tekst testowy:

Kontakt: 123-456-789 lub 987 654 321  
Niepoprawny: 12345678, 12-345-6789  
  1. Dopasowanie kodów pocztowych (PL)

Wyrażenie:

/\b\d{2}-\d{3}\b/  

Tekst testowy:

Poprawne kody: 00-123, 87-654  
Niepoprawne: 00123, 87 654  
  1. Wyszukiwanie adresów URL

Wyrażenie:

/https?:\/\/(www\.)?[a-z0-9.-]+\.[a-z]{2,}(\/\S*)?/  

Tekst testowy:

Odwiedź: https://example.com, http://www.firma.pl/test  
Niepoprawne: htp://bad.url, example.com  
  1. Dopasowanie słów zaczynających się od dużej litery

Wyrażenie:

/\b[A-Z][a-z]*\b/  

Tekst testowy:

Anna Kowalska mieszka w Warszawie, a jej przyjaciel to janek.  

Te przykłady świetnie sprawdzą się do testowania i nauki RegEx w Twojej aplikacji!

Wyniki

Lp. Pasujące ciągi znaków

Kod po stronie przeglądarki

<div id="app">
    <div class="form-floating mb-3 has-validation">
        <input type="text" id="pattern" name="pattern" class="form-control"  data-bind="value: pattern, class: patternCSS" placeholder="Wpisz wyrażenie regularne" />
        <label for="pattern">Wyrażenie regularne</label>
    </div>
    <div class="form-floating mb-3">
        <textarea name="text" id="text" class="form-control vh-50" data-bind="value: text" placeholder="Wpisz tekst do sprawdzenia"></textarea>
        <label for="text">Tekst do sprawdzenia</label>
    </div>
    <div class="form-floating mb-3">
        <button class="btn btn-primary" data-bind="click: search">Sprawdź wyrażenie regularne</button>
    </div>
    <!-- ko if: success -->
    <div>
        <h4 class="text-center">Wyniki</h4>
        <table class="table">
            <thead>
                <th>Lp.</th>
                <th>Pasujące ciągi znaków</th> 
            </thead>
            <tbody data-bind="foreach: result">
                <th scope="row" data-bind="text: $index()+1"></th>
                <td data-bind="html: $data"></td>     
            </tbody>
        </table>
    </div>
    <!-- /ko -->
</div>
<script>
var ViewModel = function()
{
    var self = this;
    self.pattern = ko.observable('');
    self.text = ko.observable('');
    self.result = ko.observable('');
    self.success = ko.observable(false);
    self.patternCSS = ko.observable('');

    self.search = function ()
    {
        var data = {
            pattern: self.pattern(),
            text: self.text(),
            token: '8b06d702b6d8f5191a3626abe896b72aec5e43d1'
        };
        self.result('');
        self.success(false);
        self.patternCSS('');
        axios.post(urlSite('public/ajax/app/exec/2'), data, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
          .then(function (response) {
              self.result(response.data.data);
              self.success(true);
        }).catch(function(error) {
              self.success(false);
              self.patternCSS('is-invalid');
              BootstrapToast.show({title: 'Błąd', message: error.response.data.message, when: 'teraz', type: 'text-bg-danger'});
        });
    };
};
var vm = new ViewModel();
ko.applyBindings(vm, document.getElementById('app'));
</script>

Kod po stronie serwera

$pattern = Input::post('pattern', '');
$text = Input::post('text', '');

$result = Regexp::factory($pattern, $text)
    ->execute($matches);

if ($result === false)
{
    throw HTTP_Exception::factory(400, json_encode(array('message' => 'Nieprawidłowe wyrażenie regularne')))
        ->as_json();
}
else
{
    if (empty($matches[0]))
    {
        throw HTTP_Exception::factory(400, json_encode(array('message' => 'Nie znaleziono pasujących ciągów znaków')))
            ->as_json();
    }
        
    for ($i = 0, $c = count($matches); $i < $c; $i++)
    {
        $matches[$i] = implode('<br />', $matches[$i]);
    }
    
    $output = ['data' => $matches];    
    $response = Response::factory()
        ->headers('Content-Type', 'application/json')
        ->status(200)
        ->body(json_encode($output, JSON_PRETTY_PRINT));
    echo $response->send_headers()->body();    
}

Tagi

Ocena aplikacji

Dziękujemy!
()

Używam plików cookie

Moja strona wykorzystuje niezbędne pliki cookie i local storage, które są konieczne do prawidłowego działania strony i świadczenia usług. Możesz dowiedzieć się więcej w mojej polityce prywatności.