a terminal colour escape code
Matches a terminal colour escape code. It finds the match anywhere inside the text. There are no capture groups.
Pattern
/\x1b\[[0-9;]*m/- Match scope
- anywhere inside the text
- Capture groups
- 0
- What it catches in the first example
- [31m
Try it yourself
Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.
[31mred[0m
2 matches
Examples that match
- [31mred[0m
Examples that do not match
- plain
- [31m
Other expressions in this group
\[([^\]]*)\]what sits inside square brackets\(([^)]*)\)what sits inside round brackets[\uD800-\uDBFF][\uDC00-\uDFFF]an emoji that takes two code units(.)\1{2,}the same character three times or more,\s*([}\]])a comma left before a closing bracket\*\*([^*]+)\*\*bold text wrapped in double asterisks`([^`]+)`code wrapped in backticks(\w+)="([^"]*)"an attribute whose value is in double quotesHow to read this
- With ^ and $ around it, the whole string must match; without them the match can sit anywhere. Always anchor an expression you use for validation.
- Round brackets ( ) capture what they wrap. When you only need grouping, write (?: ) so the numbering of later groups does not shift.
- Every expression here is checked against its examples. Even so, "looks like an email" and "is a real inbox" remain different questions.
- Nested open-ended repeats such as (a+)+ can blow up on certain inputs. Look for that shape before pasting someone else’s expression into your code.
Frequently asked questions
Q. What is the regex for a terminal colour escape code?
\x1b\[[0-9;]*m.
Q. Which strings match?
Text like [31mred[0m matches; text like plain does not.
Q. Does the whole string have to match?
No. It finds the part anywhere inside the text. Add ^ and $ around it if you want a whole-string check.
Q. How do I use what it caught?
There are no capture groups, so only the whole match (match[0]) comes back. Wrap the part you need in brackets to capture it.