skip-regex
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

skipRegex

npm Version License Build Status Coverage Minified Size

Micro parser for detection of literal regexes.

  • Fast detection with high accuracy.
  • Minimum size.
  • Compatible with NodeJS, bundlers, IE9+, and modern Browsers.
  • TypeScript definition.
  • Zero dependencies.

Install

npm install skip-regex --save
# or 
yarn add skip-regex

or load the global skipRegex function in your browser:

<script src="https://unpkg.com/skip-regex/index.min.js"></script>

Three formats transpiled to ES5:

  • CommonJS for node.js and browserify-like bundlers.
  • ESM for bundlers like Rollup.
  • UMD for AMD, CommonJS, and browsers.

Syntax

skipRegex(sourcestring, startnumber) => number

The start position must point to a slash within source.

From there, skipRegex will find the end of a regular expression in the given string.

The returned value is the position of the character following the regex, or start+1 if the slash does not start a regex.

Example

This is a silly example, but it will give the idea.

import skipRegex from 'skip-regex'
 
const source = ' /.*/ '
const start  = source.indexOf('/')
 
if (~start) {
  const end = skipRegex(source, start)
 
  if (end > start + 1) {      // detected as regex?
    const regex = source.slice(start, end)
    console.log(`Found regex ${regex} at position ${start}!`)
 
  } else if (source[end] === '*' || source[end] === '/') {
    console.log('The slash starts a JS comment.')
 
  } else {
    console.log('The slash is a division sign.')
  }
}

For something more complete see the js-cleanup code, an utility to clean comments safely in JS-like sources, which uses skip-regex to skip regular expressions.

For Rollup, you can use rollup-plugin-node-resolve to resolve 'skip-regex' as an ES6 module.

For TypeScript, enable esModuleInterop in your tsconfig.json or use the "import=require" syntax:

import skipRegex = require('skip-regex')
 
//...

Related Links

Some sites and tools that have been helpful:

Support my Work

I'm a full-stack developer with more than 20 year of experience and I try to share most of my work for free and help others, but this takes a significant amount of time and effort so, if you like my work, please consider...

Of course, feedback, PRs, and stars are also welcome 🙃

Thanks for your support!

Licence

The MIT license (MIT)

© 2018 Alberto Martínez

Package Sidebar

Install

npm i skip-regex

Weekly Downloads

23,516

Version

1.0.2

License

MIT

Unpacked Size

25.3 kB

Total Files

10

Last publish

Collaborators

  • amarcruz