Which regex features actually work here?
Literals, the dot, character classes including negated ones, the shorthand classes \d \w \s and their negations, the escapes \t \n \r, the quantifiers * + ? {n} {n,m} and {n,}, capturing and non-capturing groups, and alternation with the pipe. That covers the great majority of patterns people use for identifiers, codes, and reference numbers.
Why does my a+ never produce a long run?
Because an unbounded quantifier has no natural upper limit, and a generator must choose one. The cap is 6, applied to *, +, and open-ended {n,}. If you want longer strings, write the bound explicitly, for example a{20,40}, which is honoured exactly.
The generated strings do not match my regex. What went wrong?
Almost certainly a lookaround or a backreference. Both are reported as warnings: a lookahead or lookbehind is skipped entirely, and a backreference is treated as a literal rather than as a repeat of the captured group. A password pattern built out of lookaheads, for instance, will parse here but the generated strings will not satisfy the constraints those lookaheads were enforcing.
Are the generated strings unique?
No. Each string is generated independently, so a narrow pattern such as \d{2} will produce plenty of duplicates in a batch of 50. If you need distinct values, generate more than you need and de-duplicate, or widen the pattern.
Is this a real regex engine?
It is a purpose-built parser for a practical subset, not the browser's RegExp engine running in reverse (which is not a thing that exists). It builds a small syntax tree from your pattern and then walks it choosing random branches and repetition counts. That is why the supported feature list is explicit, and why the unsupported features fail loudly rather than silently.
What does \w actually generate?
A digit, an uppercase letter, a lowercase letter, or an underscore, drawn uniformly across all sixty-three of those characters. That matches the standard definition of the word class in ASCII. It does not include accented letters or any other Unicode word character, so \w here is narrower than \w under a Unicode-aware engine.
Why does \s never produce a newline?
Because the output is one string per line, and a generated newline would split a single sample across two lines with no way to tell which is which. The space class is deliberately narrowed to a space or a tab. That is a narrowing of the real \s, which also covers newlines, carriage returns, form feeds, and vertical tabs.
How many strings can I generate at once?
Up to 1,000 per run. The count is clamped rather than rejected: ask for 5,000 and you get 1,000, ask for zero or a non-number and you get one. Generate a larger batch than you need and de-duplicate if you require distinct values, since nothing here guarantees uniqueness.
Can I use this to generate test emails or phone numbers?
Yes, and it is one of the better uses, as long as you write the shape yourself. A pattern like [a-z]{5,10}@example\.(com|net) gives usable addresses, and \+1-\d{3}-\d{3}-\d{4} gives phone-shaped strings. What it will not do is check that the result is a real, deliverable address or a valid number range, because it only knows the pattern you gave it.
Is anything uploaded?
No. The parser and the generator both run in the page, so the pattern you type and the strings it produces stay on your device. Once the page has loaded it keeps working with the network disconnected.