Distinct strings that match a pattern, in a fixed order, paginated with limit and offset, with optional length and character-set bounds.
Each card calls the real API. Edit the patterns and compute. No signup.
| Operation | Notation | Answers | Returns |
|---|---|---|---|
| strings | {s ∈ A} | Distinct strings the pattern matches, paginated by limit/offset. | string[] |
| Parameter | Values | Meaning |
|---|---|---|
| limit | 1 to 100 | Maximum number of distinct strings to return in the call. The example cards above and the live demo cap it at 10. |
| offset | integer | Strings to skip before collecting, which is how you paginate. |
| minLength | integer | Lower bound of the length window; excluded strings never consume offset positions. |
| maxLength | integer | Upper bound of the length window. |
| pathOrder | sweep · interleave · shuffled | Which paths of the language are expanded first. |
| characterOrder | ascending · shuffled | How each position is filled from its character range. |
| seed | integer | Draws both shuffled orders, so a shuffled run stays reproducible. |
| charset | character class | Restricts generation to a character class such as [a-z]; paths needing anything else are dropped. |
The main operations on this page, called through the official SDK.
import { RegexSolverClient, Term } from 'regexsolver';
const client = new RegexSolverClient({ apiToken: process.env.REGEXSOLVER_API_TOKEN });
const term = Term.regex("(alpha|beta|prod)-[a-z0-9]{4}");
// Distinct strings the pattern matches
await client.generateStrings(term, 5, 0);
// ["beta-0000", "beta-0001", "beta-0002", "beta-0003", "beta-0004"]
// Page through the language with offset. Pages only line up on a
// deterministic term, so determinize once first.
const bits = await client.determinize(Term.regex("[01]{3}"));
const all = [];
for (let offset = 0; ; offset += 3) {
const page = await client.generateStrings(bits, 3, offset);
all.push(...page);
if (page.length < 3) break;
}
// ["000", "001", "010"], then ["011", "100", "101"], then ["110", "111"]
// Only strings within a length window
await client.generateStrings(Term.regex("(ab|cde)*"), 5, 0, { minLength: 4, maxLength: 6 });
// ["abab", "cdeab", "abcde", "ababab", "cdecde"]
// Restrict generation to a character class
await client.generateStrings(Term.regex("[a-z]{3}"), 5, 0, { charset: "[a-c]" });
// Shuffled order, reproducible with a seed
await client.generateStrings(term, 5, 0, {
pathOrder: "shuffled", characterOrder: "shuffled", seed: 42,
});