regexmoji

1.0.0 • Public • Published

regexmoji

regexmoji is an experimental module. Its main goal is to make regular expressions easier to read and maintain. Just like how in CoffeeScript, annotating regular expressions is possible (and I love that), with this plugin you can do this in vanilla JS. Also, a key advantage over CoffeeScript is that, it can also reduce repetition.

Usage

This is one of the most confusing email validation patterns i can find online:

/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g

With regexmoji, it can reduce to:

import regexmoji from 'regexmoji'
 
regexmoji(
  /💜(?:\.💜)*@(?:💚(?:💧💚)?\.)+💚(?:💧💚)?/g,
  {
    "💚": /[a-z0-9]/, // alphanumeric (single)
    "💧": /[a-z0-9-]*/, // alphanumeric and dash (multi)
    "💜": /[a-z0-9!#$%&'*+/=?^_`{|}~-]+/, // stuff
  }
);

It became easier to read, and even entertaining! This is just like a RegExp equivalent of template literals. I wish they existed. However, even if they existed, they would look something like this:

RegExp`/${C}(?:\.${C})*@(?:${A}(?:${B}${A})?\.)+${A}(?:${B}${A})?/g`

So I like this emoji approach better. Especially visually.

API

Basic usage:

import regexmoji from 'regexmoji'
let regex = regexmoji(inputRegex, dictionary)

Shorthand:

import {rm} from 'regexmoji'
let regex = rm(inputRegex, dictionary)

Custom, re-usable:

import {create} from 'regexmoji'
let rm = create(dictionary)
let regex1 = rm(inputRegex1)
let regex2 = rm(inputRegex2)

See Also

Package Sidebar

Install

npm i regexmoji

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

177 kB

Total Files

5

Last publish

Collaborators

  • onurkerimov