What is regexpp?
The regexpp npm package is a library for parsing and manipulating regular expressions in JavaScript. It provides a detailed regular expression parser with a visitor interface for traversing abstract syntax trees, and utilities for working with regular expressions.
What are regexpp's main functionalities?
Regular Expression Parser
This feature allows you to parse a regular expression literal into an abstract syntax tree (AST), which can then be traversed or manipulated.
const { parseRegExpLiteral } = require('regexpp');
const ast = parseRegExpLiteral('/abc/g');
RegExp Visitor
This feature provides a visitor interface to traverse the AST nodes of a parsed regular expression, allowing you to perform operations on individual nodes.
const { RegExpParser, visitRegExpAST } = require('regexpp');
const parser = new RegExpParser();
const ast = parser.parsePattern('a|b');
visitRegExpAST(ast, {
onCharacterEnter(node) {
console.log(node.value);
}
});
RegExp Validator
This feature allows you to validate a regular expression pattern for syntax errors, which is useful for ensuring patterns are correct before using them.
const { RegExpValidator } = require('regexpp');
const validator = new RegExpValidator();
try {
validator.validatePattern('(?<name>a)');
} catch (error) {
console.error(error.message);
}
Other packages similar to regexpp
ret
The 'ret' package is a regular expression parser that tokenizes regex strings. It is similar to regexpp in that it provides a way to parse regular expressions, but it does not offer the same visitor interface for traversing the AST.
regexp-tree
The 'regexp-tree' package provides a regular expression parser, transformer, and optimizer. It is similar to regexpp in parsing capabilities but also includes optimization features for regular expressions, which regexpp does not have.
regexpp
A regular expression parser for ECMAScript.
💿 Installation
$ npm install regexpp
- require Node.js 8 or newer.
📖 Usage
import {
AST,
RegExpParser,
RegExpValidator,
RegExpVisitor,
parseRegExpLiteral,
validateRegExpLiteral,
visitRegExpAST
} from "regexpp"
parseRegExpLiteral(source, options?)
Parse a given regular expression literal then make AST object.
This is equivalent to new RegExpParser(options).parseLiteral(source)
.
- Parameters:
source
(string | RegExp
) The source code to parse.options?
(RegExpParser.Options
) The options to parse.
- Return:
- The AST of the regular expression.
validateRegExpLiteral(source, options?)
Validate a given regular expression literal.
This is equivalent to new RegExpValidator(options).validateLiteral(source)
.
visitRegExpAST(ast, handlers)
Visit each node of a given AST.
This is equivalent to new RegExpVisitor(handlers).visit(ast)
.
RegExpParser
new RegExpParser(options?)
parser.parseLiteral(source, start?, end?)
Parse a regular expression literal.
- Parameters:
source
(string
) The source code to parse. E.g. "/abc/g"
.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.
- Return:
- The AST of the regular expression.
parser.parsePattern(source, start?, end?, uFlag?)
Parse a regular expression pattern.
- Parameters:
source
(string
) The source code to parse. E.g. "abc"
.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.uFlag?
(boolean
) The flag to enable Unicode mode.
- Return:
- The AST of the regular expression pattern.
parser.parseFlags(source, start?, end?)
Parse a regular expression flags.
- Parameters:
source
(string
) The source code to parse. E.g. "gim"
.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.
- Return:
- The AST of the regular expression flags.
RegExpValidator
new RegExpValidator(options)
validator.validateLiteral(source, start, end)
Validate a regular expression literal.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.
validator.validatePattern(source, start, end, uFlag)
Validate a regular expression pattern.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.uFlag?
(boolean
) The flag to enable Unicode mode.
validator.validateFlags(source, start, end)
Validate a regular expression flags.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is 0
.end?
(number
) The end index in the source code. Default is source.length
.
RegExpVisitor
new RegExpVisitor(handlers)
visitor.visit(ast)
Validate a regular expression literal.
📰 Changelog
🍻 Contributing
Welcome contributing!
Please use GitHub's Issues/PRs.
Development Tools
npm test
runs tests and measures coverage.npm run build
compiles TypeScript source code to index.js
, index.js.map
, and index.d.ts
.npm run clean
removes the temporary files which are created by npm test
and npm run build
.npm run lint
runs ESLint.npm run update:test
updates test fixtures.npm run update:ids
updates src/unicode/ids.ts
.npm run watch
runs tests with --watch
option.