Skip to content

SiddharthShyniben/betteregex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

betteregex

GitHub contributors Snyk Vulnerabilities for GitHub Repo npm bundle size npm downloads License Code style XO

Credit to @Hashbrown777 on GitHub for the idea and the original implementation

betteregex is a tool that allows regex pros to do write cleaner, more understandable regexes. Write regexes without worrying about:

  • double backslashing (just write "\d" instead of "\\d")
  • adding whitespace for readability
  • adding comments
// Comparing two ways of writing RFC2822-like email validation regex

// The normal way: small but cryptic
const emailRegex = /[a-z\d!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z\d!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z\d](?:[a-z\d-]*[a-z\d])?\.)+[a-z\d](?:[a-z\d-]*[a-z\d])?/g

// The betteregex way: longer but straightforward
const { regex } = require('betteregex')
const anythingAllowedInEmail = '[a-z0-9!#$%&\'*+/=?^_`{|}~-]+';

const emailRegex = regex`
	// Match one or more alphabet, numbers, one of allowed special characters or tildes
	${anythingInEmailRegex}

	// Open group
	(?:
		// Match a dot if any
		\.
		// Same as before
		${anythingInEmailRegex}
	// Close group, match one or more greedy
	)*
	
	// The @
	@
	
	// Open group
	(?:
		// Provider name (gmail etc.)
		[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
		// The dot
		\.
	// Close group
	)+
	
	/*
		The ending extension
		May not match everything becauseextensions are (mostly) letters
	*/
	[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
${'g'}`

Prerequisites

Before you begin, make sure you have installed NodeJS.

Installation

Install using npm:

$ npm i betteregex

Usage

const {regex} = require("betteregex")

const exp = regex`
	// Your regex here
	// Example:
	\d+\w\s

	.*
`

For more info, read the documentation

License

THis project is licensed under GNU GPL 3.0