1.0.0 • Published 8 years ago

regextag v1.0.0

Weekly downloads
6
License
WTFPL
Repository
github
Last release
8 years ago

RegExTag

"npm install regextag"

This is a tag for template literals that allows you create regular expressions more easily.

Requirements

As template literals are a part of ES6, you need an engine that supports ES6.

Usage

In the nutshell:

let RegExTag = require('regextag');

let myRegexp = RegExTag({ignoreCase: true, verbose: true})`
    ^    # Start of the line
    .*   # Match every char
    ${n} # Then contents of the n variable
    $    # End of the line
`;

myRegexp; //  /^.*42$/i

The overall usage is: RegExTag ( options ) ` template `

Options

Options is an object with the following boolean fileds.

global, ignoreCase, multiline

Works just as usual regexp modifiers.

RegExTag ({global: true, ignoreCase: true, multiline: true}) `foobar`; // /foobar/gim

Note that ignoreCase name is, unfortunately, case dependent.

sticky

An experimental regexp modifier. May be unsupported by your engine.

RegExTag ({sticky: true}) `foobar`; // If you're lucky enough, then /foobar/y

unicode

An experimental regexp modifier. May be unsupported by your engine.

RegExTag ({unicode: true}) `foobar`; // If you're lucky enough, then /foobar/u

verbose

Not a regexp modifier but rather a parser option. Ignores all the whitespaces in the template and adds comments starting from #.

RegExTag ({verbose: true}) `
    Hello world! # That's what every coder writes at least once :)
`; // /Helloworld!/

dotAll

An another parser option. If provided, dot (.) is replaced by [^] that matches everything.

Dot is not replaced if escaped and in character classes and template substitutions.

RegExTag ({dotAll: true}) `.*[.,]\.`; // /[^]*[.,]\./

Template

Just like plain old regular expressions. There's no need to escape backslashes twice, `\s` produces /\s/.

RegExTag () `Foo\s*bar`; // /foo\s*bar/

You can use template literal substitutions and it would be escaped for you.

let variable = '.*';

RegExTag () `^foo${variable}bar`; // /foo\.\*bar/