drb
Easily build date regular expressions
drb (Date Regex Builder) is a library to aide in generating regular expressions to match dates.
Table of Contents
Purpose
Regular expressions are difficult to get right and can get messy quickly. Consider creating a regular expression to match a day of the month. A naïve attempt might be to create a regex that matches two digits:
\d{2}
But there's a problem with this - 99
matches this regular expression and is not a valid day of the month. So we must refactor this to be a little more clever:
[0-3][0-9]
This is closer to what we want, but it still matches numbers from 32
to 39
.
[0-2][0-9]|3[0-1]
We're almost there. Valid dates still match correctly, and 32+
numbers are not matching, which is what we want. However, 00
generates a false-positive match when using this regex. We can finally meet all of the requirements with the following regex:
0[1-9]|[1-2][0-9]|3[0-1]
Using drb, this regex is easy to generate:
const drbMoment = const regex = console // (?:(?:0[1-9]|[12][0-9]|3[01]))
Installation
Install with npm:
$ npm install --save drb
Or optionally using yarn
$ yarn add drb
Usage
Import drb and a formatter (currently only Moment.js is supported) using one of these methods:
Node.js
const drb = const momentFormatter =
ES6/TypeScript
Now combine drb with a formatter
const drbMoment =
Use drbMoment
to create regexes using the syntax provided by Moment.js
const regex1 = console // (?:(?:0[1-9]|[12][0-9]|3[01])) const regex2 = console// (?:(?:0[1-9]|1[0-2]))(?:-)(?:(?:0[1-9]|[12][0-9]|3[01]))(?:-)(?:\d{4})(?: )(?:(?:0[1-9]|1[0-2]))(?::)(?:(?:0[0-9]|[1-5][0-9]))(?::)(?:(?:0[0-9]|[1-5][0-9]))
License
MIT