regx
Tagged template string regular expression compiler. Supports multiline expressions, partials, and embedded comments.
Install
$ npm install --save regx
Example
; // RegExp partial to match opening block comment (flags ignored)const openPartial = /\/\*\*/i; // String partial to match closing block comment (extra escaping required)const closePartial = '\\*\\/'; // Time to write a human-readable expressionconst expression = ` // Match a non-recursive block comment ( // Must be first thing on a line ^[\t ]* // Block opener // Capture content independently ( // Match any character including newlines (non-greedy) [\s\S]*? ) // Block closer ) // Grab trailing newlines and discard them [\r\n]*`; // The result is the same as if you had written the followingconst expression = /[\r\n]*/gm;
API
regx([flags]) : regxTagFunction
Creates a template-string tag function. Optionally accepts RegExp flags.
const a = ` ^ // start of line a+ // one or more 'a' characters $ // end of line`; // result: /^a+$/gm
regxTagFunction(strings, ...values) : RegExp
The functions returned by regx()
may be cached and reused.
const rx = ; const a = rx` ^ // start of line a+ // one or more 'a' characters $ // end of line`; // result: /^a+$/gm const b = rx` ^ // start of line b+ // one or more 'b' characters $ // end of line`; // result: /^b+$/gm
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 = ; const spaceBefore = rx` [ ]foo bar`; // result: /[ ]foo bar/i const spaceAfter = rx` foo bar[ ]`; // result: /foo bar[ ]/i
© 2016 Shannon Moeller me@shannonmoeller.com
Licensed under MIT