🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

create-regex

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

create-regex

JS regex helper, easy way to create complex regular expressio in js

0.0.2
latest
Source
npm
Version published
Weekly downloads
3
200%
Maintainers
1
Weekly downloads
 
Created
Source

Create Regex

Greenkeeper badge NPM Version Build Status Test Coverage

Simple and powerful utility to create complex regex in javascript

Create regex

When creating long and powerful regular expression it becomes hard to remember and manage to numerous signs and sub patterns.

create-regex allows you to write regex in code like approche while also reducing the burden of some boilerplate actions. It also encourges the usage of regex named groups, which make the matching part of the regex much simpler.

Simple to use

  // import the regex factory
  const {RegExpFactory} = require('create-regex');
  // The regex factory assit you in creating the regex instance
  const regexFactory = new RegExpFactory({ });
  // Now by using the `create` method you create the regex instance
  // For more advanced usage go to the `API` section
  const yourRegex = regexFactory.create(({
    nonCaptureGroupWithSeperator,
    group
  })=>
    nonCaptureGroupWithSeperator([
      group('digits','\\d+'),
      group('words', '\\w+'),
      group('else', '[\\s\\S]+')
    ])
  ,'gm');
  /*
    Prodcues the following regex:
    /(?:(?:(?<digits>\d+))|(?:(?<words>\w+))|(?:(?<else>[\s\S]+)))/gm
    Try it with the following string (we higly recommend to using the site `regex101`)
  */
  const str = '121212ababa...{}';
  let match;

  while ((match = regex.exec(str)) !== null) {
      // This is necessary to avoid infinite loops with zero-width matches
      if (match.index === regex.lastIndex) {
          regex.lastIndex++;
      }
      
      Object.keys(match.groups).forEach((groupName) => {
      if (match.groups[groupName])
          console.log(`Found match, group ${groupName}: ${match.groups[groupName]}`);
      });
  }
  //It should produce the following output
  /*
    Found match, group digits: 121212
    Found match, group words: ababa
    Found match, group else: ...{}
  */

API

The API is very simple and yet powerfull. The factory accepts mixins that you will be able use during create

  const regexFactory = new RegExpFactory({ 
    mixins: {
      stringSigns: [`'`,'"',"'"]
    },
    RegExp : RegExp // <-- you can overide the regex used internally
  });
  // Let's say we want to match quoted number and digits
  // Really quoted with the same string sign from both sides
  regexFactory.create(({
      // Built in helpers
      nonCaptureGroupWithSeperator,
      group,
      wrapPattern,
      // User mixins
      stringSigns
    })=>
      nonCaptureGroupWithSeperator([
        group('digits',
          wrapPattern('\\d+',stringSigns)
        ),
        group('words',
          wrapPattern('\\w+',stringSigns)
        ),
        group('else', '[\\s\\S]+')
      ])
    ,'gm');
  /* Produces the following regex:
    /(?:(?:(?<digits>(?:(?:'\d+')|(?:"\d+")|(?:'\d+'))))|(?:(?<words>(?:(?:'\w+')|(?:"\w+")|(?:'\w+'))))|(?:(?<else>[\s\S]+)))/gm
  */

License

MIT

Keywords

regex

FAQs

Package last updated on 25 Jun 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts