Package Exports
- @eklabdev/regexid
- @eklabdev/regexid/dist/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@eklabdev/regexid) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
๐ฆ @eklabdev/regexid
A deterministic, lexicographic regex match generator for fixed-length patterns.
Supports literal + ranged character sets like [a-z]{2}, [0-9]{1,3}
, and embedded string prefixes/suffixes.
โจ Features
Deterministic traversal of regex matches (not random like randexp)
Lexicographic next() string matching
Supports:
[a-z]{n}
and[abc]{n}
[a-z]{n,m} range repetitions (unrolled)
Literal strings before/after/within regex blocks
Generates the first match, next match, and total possible combinations
Written in modern TypeScript with full ESM support
๐ Installation
npm install @eklabdev/regexid
Or if you're using Bun:
bash
bun add @eklabdev/regexid
๐ ๏ธ Usage
import {
nextRegexGenerator,
getFirstValidMatch,
parseRegex,
getNextMatch,
countRegexCombinations,
} from '@eklabdev/regexid'
const pattern = 'ex[a-b]{2}yz[0-2]{1}'
const first = getFirstValidMatch(pattern)
console.log(first) // "exaayz0"
const gen = nextRegexGenerator(pattern, first)
console.log(gen.next().value) // "exaayz1"
console.log(gen.next().value) // "exabyz0"
const total = countRegexCombinations(pattern)
console.log(`Total combinations: ${total}`) // 12
๐ API
parseRegex(regexStr: string): RegexToken[]
Parses a simplified regex string into tokenized parts:
[
{ type: 'literal', value: 'ex' },
{ type: 'range', ranges: [['a','z']], repeat: 1 },
...
]
getFirstValidMatch(regexStr: string): string
Returns the lexicographically first valid string that matches the regex pattern.
getNextMatch(tokens: RegexToken[], current: string): string | null
Given parsed tokens and a current string, returns the next valid match or null if exhausted.
nextRegexGenerator(regexStr: string, current: string): Generator
Yields a lexicographically sorted sequence of valid regex matches from the current string onward.
countRegexCombinations(regexStr: string): number
Returns the total number of deterministic combinations for a supported regex pattern.
Ignores literal characters
Unrolls {n,m} as full range
๐ง Limitations
For now, this package does not support:
Regex alternation: (a|b)
Optional modifiers: ?, *, +
Grouping and backreferences
Negative classes: [^a-z]
๐งช Testing
This project uses Mocha + Chai for unit tests.
npm test
๐ค Contributing
Pull requests are welcome! If youโd like to contribute:
Fork this repo
Run tests (npm test)
Follow project style (.prettierrc included)
๐ License MIT License ยฉ 2025 EKlabDev