Regexp tester
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!
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
- 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
- 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
- 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
- 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
- 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
- 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();
}