skipRegex
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:
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
skipRegexsource: string, start: number 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.
const source = ' /.*/ 'const start = source if ~start const end = if end > start + 1 // detected as regex? const regex = source console else if sourceend === '*' || sourceend === '/' console else console
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:
//...
Related Links
Some sites and tools that have been helpful:
- RegExp (Regular Expressions) Objects : ECMA Specs
- RegExp on MDN : MDN Reference
- RegEgg : Complete tutorial, various regex dialects
- RegExr : Online tool for learn and test regexes
- RegExp Preview and Editor : VSCode extension based on regexper-static
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