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 = ; let myRegexp = ` ^ # Start of the line .* # Match every char # 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.
`foobar`; // /foobar/gim
Note that ignoreCase
name is, unfortunately, case dependent.
sticky
An experimental regexp modifier. May be unsupported by your engine.
`foobar`; // If you're lucky enough, then /foobar/y
unicode
An experimental regexp modifier. May be unsupported by your engine.
`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 #
.
` 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.
`.*[.,]\.`; // /[^]*[.,]\./
Template
Just like plain old regular expressions. There's no need to escape backslashes twice, `\s`
produces /\s/
.
`Foo\s*bar`; // /foo\s*bar/
You can use template literal substitutions and it would be escaped for you.
let variable = '.*'; `^foobar`; // /foo\.\*bar/