{\bfseries{What does this do?}}

\begin{quote}
Pass two numbers, get a regex-\/compatible source string for matching ranges. Validated against more than 2.\+78 million test assertions. \end{quote}
Please consider following this project\textquotesingle{}s author, \href{https://github.com/jonschlinkert}{\texttt{ Jon Schlinkert}}, and consider starring the project to show your \+:heart\+: and support.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30526}{}\doxysection{Install}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30526}
Install with \href{https://www.npmjs.com/}{\texttt{ npm}}\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\$ npm install -\/-\/save to-\/regex-\/range }

\end{DoxyCode}


$<$details$>$

~\newline


This libary generates the {\ttfamily source} string to be passed to {\ttfamily new Reg\+Exp()} for matching a range of numbers.

{\bfseries{Example}}


\begin{DoxyCode}{0}
\DoxyCodeLine{const toRegexRange = require('to-\/regex-\/range');}
\DoxyCodeLine{const regex = new RegExp(toRegexRange('15', '95')); }

\end{DoxyCode}


A string is returned so that you can do whatever you need with it before passing it to {\ttfamily new Reg\+Exp()} (like adding {\ttfamily $^\wedge$} or {\ttfamily \$} boundaries, defining flags, or combining it another string).

~\newline


$<$/details$>$

$<$details$>$

{\bfseries{Why use this library?}} 

~\newline
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30527}{}\doxysubsection{Convenience}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30527}
Creating regular expressions for matching numbers gets deceptively complicated pretty fast.

For example, let\textquotesingle{}s say you need a validation regex for matching part of a user-\/id, postal code, social security number, tax id, etc\+:


\begin{DoxyItemize}
\item regex for matching {\ttfamily 1} =$>$ {\ttfamily /1/} (easy enough)
\item regex for matching {\ttfamily 1} through {\ttfamily 5} =$>$ {\ttfamily /\mbox{[}1-\/5\mbox{]}/} (not bad...)
\item regex for matching {\ttfamily 1} or {\ttfamily 5} =$>$ {\ttfamily /(1$\vert$5)/} (still easy...)
\item regex for matching {\ttfamily 1} through {\ttfamily 50} =$>$ {\ttfamily /(\mbox{[}1-\/9\mbox{]}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$50)/} (uh-\/oh...)
\item regex for matching {\ttfamily 1} through {\ttfamily 55} =$>$ {\ttfamily /(\mbox{[}1-\/9\mbox{]}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$5\mbox{[}0-\/5\mbox{]})/} (no prob, I can do this...)
\item regex for matching {\ttfamily 1} through {\ttfamily 555} =$>$ {\ttfamily /(\mbox{[}1-\/9\mbox{]}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$55\mbox{[}0-\/5\mbox{]})/} (maybe not...)
\item regex for matching {\ttfamily 0001} through {\ttfamily 5555} =$>$ {\ttfamily /(0\{3\}\mbox{[}1-\/9\mbox{]}$\vert$0\{2\}\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$0\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{3\}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}$\vert$55\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}$\vert$555\mbox{[}0-\/5\mbox{]})/} (okay, I get the point!)
\end{DoxyItemize}

The numbers are contrived, but they\textquotesingle{}re also really basic. In the real world you might need to generate a regex on-\/the-\/fly for validation.

{\bfseries{Learn more}}

If you\textquotesingle{}re interested in learning more about \href{http://www.regular-expressions.info/charclass.html}{\texttt{ character classes}} and other regex features, I personally have always found \href{http://www.regular-expressions.info/charclass.html}{\texttt{ regular-\/expressions.\+info}} to be pretty useful.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30528}{}\doxysubsection{Heavily tested}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30528}
As of April 07, 2019, this library runs \href{./test/test.js}{\texttt{ $>$1m test assertions}} against generated regex-\/ranges to provide brute-\/force verification that results are correct.

Tests run in $\sim$280ms on my Mac\+Book Pro, 2.\+5 GHz Intel Core i7.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30529}{}\doxysubsection{Optimized}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30529}
Generated regular expressions are optimized\+:


\begin{DoxyItemize}
\item duplicate sequences and character classes are reduced using quantifiers
\item smart enough to use {\ttfamily ?} conditionals when number(s) or range(s) can be positive or negative
\item uses fragment caching to avoid processing the same exact string more than once
\end{DoxyItemize}

~\newline


$<$/details$>$\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30530}{}\doxysection{Usage}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30530}
Add this library to your javascript application with the following line of code


\begin{DoxyCode}{0}
\DoxyCodeLine{const toRegexRange = require('to-\/regex-\/range'); }

\end{DoxyCode}


The main export is a function that takes two integers\+: the {\ttfamily min} value and {\ttfamily max} value (formatted as strings or numbers).


\begin{DoxyCode}{0}
\DoxyCodeLine{const source = toRegexRange('15', '95');}
\DoxyCodeLine{//=> 1[5-\/9]|[2-\/8][0-\/9]|9[0-\/5]}
\DoxyCodeLine{}
\DoxyCodeLine{const regex = new RegExp(`\string^\$\{source\}\$`);}
\DoxyCodeLine{console.log(regex.test('14')); //=> false}
\DoxyCodeLine{console.log(regex.test('50')); //=> true}
\DoxyCodeLine{console.log(regex.test('94')); //=> true}
\DoxyCodeLine{console.log(regex.test('96')); //=> false }

\end{DoxyCode}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30531}{}\doxysection{Options}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30531}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30532}{}\doxysubsection{options.\+capture}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30532}
{\bfseries{Type}}\+: {\ttfamily boolean}

{\bfseries{Deafault}}\+: {\ttfamily undefined}

Wrap the returned value in parentheses when there is more than one regex condition. Useful when you\textquotesingle{}re dynamically generating ranges.


\begin{DoxyCode}{0}
\DoxyCodeLine{console.log(toRegexRange('-\/10', '10'));}
\DoxyCodeLine{//=> -\/[1-\/9]|-\/?10|[0-\/9]}
\DoxyCodeLine{}
\DoxyCodeLine{console.log(toRegexRange('-\/10', '10', \{ capture: true \}));}
\DoxyCodeLine{//=> (-\/[1-\/9]|-\/?10|[0-\/9]) }

\end{DoxyCode}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30533}{}\doxysubsection{options.\+shorthand}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30533}
{\bfseries{Type}}\+: {\ttfamily boolean}

{\bfseries{Deafault}}\+: {\ttfamily undefined}

Use the regex shorthand for {\ttfamily \mbox{[}0-\/9\mbox{]}}\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{console.log(toRegexRange('0', '999999'));}
\DoxyCodeLine{//=> [0-\/9]|[1-\/9][0-\/9]\{1,5\}}
\DoxyCodeLine{}
\DoxyCodeLine{console.log(toRegexRange('0', '999999', \{ shorthand: true \}));}
\DoxyCodeLine{//=> \(\backslash\)d|[1-\/9]\(\backslash\)d\{1,5\} }

\end{DoxyCode}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30534}{}\doxysubsection{options.\+relax\+Zeros}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30534}
{\bfseries{Type}}\+: {\ttfamily boolean}

{\bfseries{Default}}\+: {\ttfamily true}

This option relaxes matching for leading zeros when when ranges are zero-\/padded.


\begin{DoxyCode}{0}
\DoxyCodeLine{const source = toRegexRange('-\/0010', '0010');}
\DoxyCodeLine{const regex = new RegExp(`\string^\$\{source\}\$`);}
\DoxyCodeLine{console.log(regex.test('-\/10')); //=> true}
\DoxyCodeLine{console.log(regex.test('-\/010')); //=> true}
\DoxyCodeLine{console.log(regex.test('-\/0010')); //=> true}
\DoxyCodeLine{console.log(regex.test('10')); //=> true}
\DoxyCodeLine{console.log(regex.test('010')); //=> true}
\DoxyCodeLine{console.log(regex.test('0010')); //=> true }

\end{DoxyCode}


When {\ttfamily relax\+Zeros} is false, matching is strict\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{const source = toRegexRange('-\/0010', '0010', \{ relaxZeros: false \});}
\DoxyCodeLine{const regex = new RegExp(`\string^\$\{source\}\$`);}
\DoxyCodeLine{console.log(regex.test('-\/10')); //=> false}
\DoxyCodeLine{console.log(regex.test('-\/010')); //=> false}
\DoxyCodeLine{console.log(regex.test('-\/0010')); //=> true}
\DoxyCodeLine{console.log(regex.test('10')); //=> false}
\DoxyCodeLine{console.log(regex.test('010')); //=> false}
\DoxyCodeLine{console.log(regex.test('0010')); //=> true }

\end{DoxyCode}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30535}{}\doxysection{Examples}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30535}
\tabulinesep=1mm
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Range}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Result}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Compile time}}    }\\\cline{1-3}
\endfirsthead
\hline
\endfoot
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Range}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Result}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Compile time}}    }\\\cline{1-3}
\endhead
{\ttfamily to\+Regex\+Range(-\/10, 10)}   &{\ttfamily -\/\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$-\/?10\textbackslash{}$\vert$\mbox{[}0-\/9\mbox{]}}   &{\itshape 132μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(-\/100, -\/10)}   &{\ttfamily -\/1\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$-\/\mbox{[}2-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$-\/100}   &{\itshape 50μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(-\/100, 100)}   &{\ttfamily -\/\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$-\/?\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$-\/?100\textbackslash{}$\vert$\mbox{[}0-\/9\mbox{]}}   &{\itshape 42μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(001, 100)}   &{\ttfamily 0\{0,2\}\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$0?\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$100}   &{\itshape 109μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(001, 555)}   &{\ttfamily 0\{0,2\}\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$0?\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$55\mbox{[}0-\/5\mbox{]}}   &{\itshape 51μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(0010, 1000)}   &{\ttfamily 0\{0,2\}1\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$0\{0,2\}\mbox{[}2-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$0?\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$1000}   &{\itshape 31μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 50)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$50}   &{\itshape 24μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 55)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$5\mbox{[}0-\/5\mbox{]}}   &{\itshape 23μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 555)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$55\mbox{[}0-\/5\mbox{]}}   &{\itshape 30μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 5555)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,2\}\textbackslash{}$\vert$\mbox{[}1-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{3\}\textbackslash{}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$55\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$555\mbox{[}0-\/5\mbox{]}}   &{\itshape 43μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(111, 555)}   &{\ttfamily 11\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$1\mbox{[}2-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}2-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$5\mbox{[}0-\/4\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$55\mbox{[}0-\/5\mbox{]}}   &{\itshape 38μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(29, 51)}   &{\ttfamily 29\textbackslash{}$\vert$\mbox{[}34\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$5\mbox{[}01\mbox{]}}   &{\itshape 24μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(31, 877)}   &{\ttfamily 3\mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}4-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/7\mbox{]}\mbox{[}0-\/9\mbox{]}\{2\}\textbackslash{}$\vert$8\mbox{[}0-\/6\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$87\mbox{[}0-\/7\mbox{]}}   &{\itshape 32μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(5, 5)}   &{\ttfamily 5}   &{\itshape 8μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(5, 6)}   &{\ttfamily 5\textbackslash{}$\vert$6}   &{\itshape 11μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 2)}   &{\ttfamily 1\textbackslash{}$\vert$2}   &{\itshape 6μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 5)}   &{\ttfamily \mbox{[}1-\/5\mbox{]}}   &{\itshape 15μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 10)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$10}   &{\itshape 22μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 100)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\textbackslash{}$\vert$100}   &{\itshape 25μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 1000)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,2\}\textbackslash{}$\vert$1000}   &{\itshape 31μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 10000)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,3\}\textbackslash{}$\vert$10000}   &{\itshape 34μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 100000)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,4\}\textbackslash{}$\vert$100000}   &{\itshape 36μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 1000000)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,5\}\textbackslash{}$\vert$1000000}   &{\itshape 42μs}    \\\cline{1-3}
{\ttfamily to\+Regex\+Range(1, 10000000)}   &{\ttfamily \mbox{[}1-\/9\mbox{]}\textbackslash{}$\vert$\mbox{[}1-\/9\mbox{]}\mbox{[}0-\/9\mbox{]}\{1,6\}\textbackslash{}$\vert$10000000}   &{\itshape 42μs}   \\\cline{1-3}
\end{longtabu}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30536}{}\doxysection{Heads up!}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30536}
{\bfseries{Order of arguments}}

When the {\ttfamily min} is larger than the {\ttfamily max}, values will be flipped to create a valid range\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{toRegexRange('51', '29'); }

\end{DoxyCode}


Is effectively flipped to\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{toRegexRange('29', '51');}
\DoxyCodeLine{//=> 29|[3-\/4][0-\/9]|5[0-\/1] }

\end{DoxyCode}


{\bfseries{Steps / increments}}

This library does not support steps (increments). A pr to add support would be welcome.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30537}{}\doxysection{History}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30537}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30538}{}\doxysubsection{v2.\+0.\+0 -\/ 2017-\/04-\/21}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30538}
{\bfseries{New features}}

Adds support for zero-\/padding!\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30539}{}\doxysubsection{v1.\+0.\+0}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30539}
{\bfseries{Optimizations}}

Repeating ranges are now grouped using quantifiers. rocessing time is roughly the same, but the generated regex is much smaller, which should result in faster matching.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30540}{}\doxysection{Attribution}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30540}
Inspired by the python library \href{https://github.com/dimka665/range-regex}{\texttt{ range-\/regex}}.\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30541}{}\doxysection{About}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30541}
$<$details$>$

{\bfseries{Contributing}} 

Pull requests and stars are always welcome. For bugs and feature requests, \href{../../issues/new}{\texttt{ please create an issue}}.

$<$/details$>$

$<$details$>$

{\bfseries{Running Tests}} 

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\$ npm install \&\& npm test }

\end{DoxyCode}


$<$/details$>$

$<$details$>$

{\bfseries{Building docs}} 

\+\_\+(This project\textquotesingle{}s readme.\+md is generated by \href{https://github.com/verbose/verb-generate-readme}{\texttt{ verb}}, please don\textquotesingle{}t edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)\+\_\+

To generate the readme, run the following command\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\$ npm install -\/g verbose/verb\#dev verb-\/generate-\/readme \&\& verb }

\end{DoxyCode}


$<$/details$>$\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30542}{}\doxysubsection{Related projects}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30542}
You might also be interested in these projects\+:


\begin{DoxyItemize}
\item \href{https://www.npmjs.com/package/expand-range}{\texttt{ expand-\/range}}\+: Fast, bash-\/like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used… \href{https://github.com/jonschlinkert/expand-range}{\texttt{ more}} $\vert$ \href{https://github.com/jonschlinkert/expand-range}{\texttt{ homepage}}
\item \href{https://www.npmjs.com/package/fill-range}{\texttt{ fill-\/range}}\+: Fill in a range of numbers or letters, optionally passing an increment or {\ttfamily step} to… \href{https://github.com/jonschlinkert/fill-range}{\texttt{ more}} $\vert$ \href{https://github.com/jonschlinkert/fill-range}{\texttt{ homepage}}
\item \href{https://www.npmjs.com/package/micromatch}{\texttt{ micromatch}}\+: Glob matching for javascript/node.\+js. A drop-\/in replacement and faster alternative to minimatch and multimatch. $\vert$ \href{https://github.com/micromatch/micromatch}{\texttt{ homepage}}
\item \href{https://www.npmjs.com/package/repeat-element}{\texttt{ repeat-\/element}}\+: Create an array by repeating the given value n times. $\vert$ \href{https://github.com/jonschlinkert/repeat-element}{\texttt{ homepage}}
\item \href{https://www.npmjs.com/package/repeat-string}{\texttt{ repeat-\/string}}\+: Repeat the given string n times. Fastest implementation for repeating a string. $\vert$ \href{https://github.com/jonschlinkert/repeat-string}{\texttt{ homepage}}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30543}{}\doxysubsection{Contributors}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30543}
\tabulinesep=1mm
\begin{longtabu}spread 0pt [c]{*{2}{|X[-1]}|}
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Commits}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Contributor}}    }\\\cline{1-2}
\endfirsthead
\hline
\endfoot
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Commits}}   }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ {\bfseries{Contributor}}    }\\\cline{1-2}
\endhead
63   &\href{https://github.com/jonschlinkert}{\texttt{ jonschlinkert}}    \\\cline{1-2}
3   &\href{https://github.com/doowb}{\texttt{ doowb}}    \\\cline{1-2}
2   &\href{https://github.com/realityking}{\texttt{ realityking}}   \\\cline{1-2}
\end{longtabu}
\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30544}{}\doxysubsection{Author}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30544}
{\bfseries{Jon Schlinkert}}


\begin{DoxyItemize}
\item \href{https://github.com/jonschlinkert}{\texttt{ Git\+Hub Profile}}
\item \href{https://twitter.com/jonschlinkert}{\texttt{ Twitter Profile}}
\item \href{https://linkedin.com/in/jonschlinkert}{\texttt{ Linked\+In Profile}}
\end{DoxyItemize}

Please consider supporting me on Patreon, or \href{https://patreon.com/invite/bxpbvm}{\texttt{ start your own Patreon page}}!

\href{https://www.patreon.com/jonschlinkert}{\texttt{  }}\hypertarget{md_sfcode_node_modules_to_regex_range_README_autotoc_md30545}{}\doxysubsection{License}\label{md_sfcode_node_modules_to_regex_range_README_autotoc_md30545}
Copyright © 2019, \href{https://github.com/jonschlinkert}{\texttt{ Jon Schlinkert}}. Released under the \mbox{[}MIT License\mbox{]}(LICENSE).

\DoxyHorRuler{0}


{\itshape This file was generated by \href{https://github.com/verbose/verb-generate-readme}{\texttt{ verb-\/generate-\/readme}}, v0.\+8.\+0, on April 07, 2019.} 