node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »



NPM version Downloads Tip

Tagged template string regular expression compiler. Supports multiline expressions, partials, and embedded comments.


$ npm install --save regx


import regx from 'regx';
// 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 expression 
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)
        ${closePartial} // Block closer
    // Grab trailing newlines and discard them
// The result is the same as if you had written the following 
const expression = /(^[\t ]*\/\*\*([\s\S]*?)\*\/)[\r\n]*/gm;


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
`; // result: /^a+$/gm 

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
`; // 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 = regx('i');
const spaceBefore = rx`
    [ ]foo bar
`; // result: /[ ]foo bar/i 
const spaceAfter = rx`
    foo bar[ ]
`; // result: /foo bar[ ]/i 

© 2016 Shannon Moeller

Licensed under MIT