You can install the package via composer:
composer require vincentvanwijk/fluent-regex
You can publish the config file with:
php artisan vendor:publish --tag=":fluent-regex-config"
Start by calling the create function on the FluentRegex class.
It takes the string that the regex is to be performed on as a parameter.
The second parameter is the delimiter, which defaults to '/'
.
use VincentVanWijk\FluentRegex\Facades\FluentRegex;
$fluentRegex = FluentRegex::create("foo bar baz");
You can add tokens to the regex by chaining methods on the FluentRegex object.
/foo\s[bar baz]+/
$fluentRegex->exactly("foo")
->whiteSpace()
->anyCharacterOf('bar baz')
->oneOrMoreTimes();
Characters that need it will be escaped automatically.
/regex\!/
$fluentRegex->exactly("regex!")
Most methods can be negated using the not
modifier.
/[a-zA-Z]/
$fluentRegex->letter();
/[^a-zA-Z]/
$fluentRegex->not->letter();
Grouping constructs such as capturing groups take an anonymous function as a parameter.
The anonymous function takes a FluentRegex object as a parameter.
On this object you can continue to chain methods to create the sub-pattern for the capture group.
/foo (bar baz)/
$fluentRegex->exactly("foo ")
->capture(function (FluentRegex $regex) {
return $regex->exactly('bar')
->whiteSpace()
->exactly('baz')
})
You can call the match()
method to return an array with the matches.
The first index [0]
contains the text that matched the full pattern,
The second index [1]
will contain the text that matched the first subpattern, and so on.
$fluentRegex->match();
Or call the matchAll()
method to return a multidimensional array with all matches.
The first index [0]
is an array of full pattern matches
The second index [1]
is an array of strings matched by the first subpattern, and so on.
$fluentRegex->matchAll();
To get the regex in its string representation, call
$fluentRegex->get();
composer test
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.