Skip to content
This repository has been archived by the owner on Jan 20, 2019. It is now read-only.
/ range-regex Public archive

🔢 Generates a regex for a range between two numbers

License

Notifications You must be signed in to change notification settings

hansott/range-regex

Repository files navigation

Range Regex

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Returns a regex-compatible range from two numbers, min and max. Inspired by jonschlinkert/to-regex-range.

Why would I need this?

That's a good question. You normally would write something like if ($x > $min && $x < $max) { ... }, right?

Say you want to build a glob like function yourself.

If your glob would support syntax like foo/{1..5}.md and you plan to do the matching using a regex pattern.. Well, this library can convert 1..5 to a regex.

Read More

Install

Via Composer

$ composer require hansott/range-regex

Usage

use HansOtt\RangeRegex\FactoryDefault;
use HansOtt\RangeRegex\Range;

$factory = new FactoryDefault();
$converter = $factory->getConverter();

$range = new Range(1, 3456);
$regex = sprintf('/^(%s)$/', $converter->toRegex($range));
// /^([1-9]|[1-9][0-9]|[1-9][0-9]{2}|[1-2][0-9]{3}|3[0-3][0-9]{2}|34[0-4][0-9]|345[0-6])$/
$matchesRegex = (bool) preg_match($regex, 0); // false
$matchesRegex = (bool) preg_match($regex, 2014); // true
$matchesRegex = (bool) preg_match($regex, 3457); // false

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Credits

License

The MIT License (MIT). Please see License File for more information.