EasyRegex is a fluent and human-readable regex builder for PHP that simplifies constructing complex regular expressions without manually writing regex patterns.
To install this package using Composer, run:
composer require thejano/easy-php-regex
Use the EasyRegex
class to build and generate regex patterns fluently.
use TheJano\EasyRegex\EasyRegex;
$regex = (new EasyRegex())
->startAnchor()
->word()
->oneOrMore()
->add('@')
->word()
->oneOrMore()
->add('.')
->word()
->between(2, 5)
->endAnchor()
->toRegExp();
// Output: /^\w+@\w+\.\w{2,5}$/
$regex = (new EasyRegex())
->startAnchor()
->hasLetter()
->hasDigit()
->hasSpecialCharacter()
->atLeast(8)
->endAnchor()
->toRegExp();
// Output: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/
$regex = (new EasyRegex())
->protocol()
->www()
->word()
->oneOrMore()
->tld()
->path()
->toRegExp();
// Output: /https?:\/\/(www\.)?\w+\.[a-zA-Z]{2,}(\/\w*)*/
digit()
- Matches a digit (\d
)word()
- Matches a word character (\w
)whitespace()
- Matches a whitespace character (\s
)nonWhitespace()
- Matches a non-whitespace character (\S
)letter()
- Matches a letter ([a-zA-Z]
)anyCharacter()
- Matches any character (.
)
optional()
- Matches zero or one times (?
)exactly(int $n)
- Matches exactlyn
times ({n}
)atLeast(int $n)
- Matches at leastn
times ({n,}
)atMost(int $n)
- Matches up ton
timesbetween(int $min, int $max)
- Matches betweenmin
andmax
times ({min,max}
)oneOrMore()
- Matches one or more times (+
)zeroOrMore()
- Matches zero or more times (*
)
startGroup()
- Starts a non-capturing group ((?:
)startCaptureGroup()
- Starts a capturing group ((
)startNamedGroup(string $name)
- Starts a named group ((?<name>
)endGroup()
- Ends a group ()
)startAnchor()
- Matches the beginning of the string (^
)endAnchor()
- Matches the end of the string ($
)
negativeLookahead(string $pattern)
- Negative lookahead ((?!pattern)
)positiveLookahead(string $pattern)
- Positive lookahead ((?=pattern)
)positiveLookbehind(string $pattern)
- Positive lookbehind ((?<=pattern)
)negativeLookbehind(string $pattern)
- Negative lookbehind ((?<!pattern)
)
global()
- Applies the global (g
) flagcaseInsensitive()
- Applies the case-insensitive (i
) flagmultiline()
- Applies the multiline (m
) flagdotAll()
- Applies the dot-all (s
) flagsticky()
- Applies the sticky (y
) flag
unicodeChar(string $variant = '')
- Matches a Unicode letter (\p{L}
)unicodeDigit()
- Matches a Unicode digit (\p{N}
)unicodePunctuation()
- Matches a Unicode punctuation (\p{P}
)unicodeSymbol()
- Matches a Unicode symbol (\p{S}
)
escapeLiteral(string $text)
- Escapes special charactersipv4Octet()
- Matches an IPv4 octet ((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)
)protocol()
- Matcheshttp
orhttps
www()
- Matches optionalwww.
tld()
- Matches a top-level domain (\.[a-zA-Z]{2,}
)path()
- Matches a URL path ((\/\w*)*
)
toString()
- Returns the raw regex patterntoRegExp()
- Returns the full regex pattern wrapped in/.../
To run the test suite using Pest, execute:
vendor/bin/pest
This package is open-sourced software licensed under the MIT license.
Created by Pshtiwan Mahmood.