regx

Tagged template string regular expression compiler. Supports multiline expressions, partials, and embedded comments.
Install
$ npm install --save regx
Example
import regx from 'regx';
const openPartial = /\/\*\*/i;
const closePartial = '\\*\\/';
const expression = regx('gm')`
// Match a non-recursive block comment
(
// Must be first thing on a line
^[\t ]*
${openPartial} // Block opener
// Capture content independently
(
// Match any character including newlines (non-greedy)
[\s\S]*?
)
${closePartial} // Block closer
)
// Grab trailing newlines and discard them
[\r\n]*
`;
const expression = /(^[\t ]*\/\*\*([\s\S]*?)\*\/)[\r\n]*/gm;
API
regx([flags]) : regxTagFunction
Creates a template-string tag function. Optionally accepts RegExp flags.
const a = regx('gm')`
^ // start of line
a+ // one or more 'a' characters
$ // end of line
`;
regxTagFunction(strings, ...values) : RegExp
The functions returned by regx()
may be cached and reused.
const rx = regx('gm');
const a = rx`
^ // start of line
a+ // one or more 'a' characters
$ // end of line
`;
const b = rx`
^ // start of line
b+ // one or more 'b' characters
$ // end of line
`;
All whitespace at the beginning and end of each line is ignored. To match literal whitespace at the beginning or end of a line you must use a character set.
const rx = regx('i');
const spaceBefore = rx`
[ ]foo bar
`;
const spaceAfter = rx`
foo bar[ ]
`;
© 2016 Shannon Moeller me@shannonmoeller.com
Licensed under MIT