Regex is a very powerful tool, but its terse and cryptic vocabulary can make constructing and communicating them with others a challenge. Even developers who understand them well can have trouble reading their own back just a few months later! I am not good at Regex. During the seven years of my software engineer, I have never written a regex from scratch. I tried learning it a few times, seriously. But gradually, my regex memory is faded away.
Recently, I saw this awesome library super-expressive and I immediately love it. It provides a programmatic and human-readable way to create regular expressions. Its API uses the fluent builder pattern and is completely immutable. It’s built to be discoverable and predictable:
SuperExpressive().exactly(5).digit)index.d.ts file for full TypeScript supportSuperExpressive turns those complex and unweildy regexes that appear in code reviews into something that can be read, understood, and properly reviewed by your peers - and maintained by anyone!
Quoted from the library README
npm i super-expressiveconst SuperExpressive = require('super-expressive')
// Or as an ES6 module
import SuperExpressive from 'super-expressive'The following example recognizes the HTTP protocol or some added string inside the list of URLs.
const SuperExpressive = require('super-expressive')
const httpRegex = SuperExpressive()
.allowMultipleMatches.anyOf.string('http')
.string('nartc')
.string('jira')
.end()
.toRegex()
// Produces the following regular expression:
;/(?:http|nartc|jira)/gYou can immediately use the httpRegex variable to test against your input string and that’s it. The code is much more readable and maintainable.
It is just a simple example, usually regex will be much more complex. You can check the full list of the API
If you need a regex for validation purposes on Angular and you don’t want to install super-expressive, that’s fine. My friend @nartc built a playground online where you can simply generate your regex using super-expressive syntax and test your result as well.
Check out the working app -> https://sepg.netlify.app/

I contributed to the responsiveness of the application on the mobile web browser.
If you like it, give a star to my friend repo yeah! 💪💪💪