Regular expressions·a shell environment variable

a shell environment variable

Matches a shell environment variable. It finds the match anywhere inside the text. There is 1 capture group.

Pattern
/\$\{?([A-Z_][A-Z0-9_]*)\}?/
Match scope
anywhere inside the text
Capture groups
1
What it catches in the first example
$HOME

Try it yourself

Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.

$HOME ${DATABASE_URL} echo $PATH

3 matches

Examples that match

  • $HOME
  • ${DATABASE_URL}
  • echo $PATH

Examples that do not match

  • $lower
  • PATH
  • ${1}

Other expressions in this group

How 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 shell environment variable?

\$\{?([A-Z_][A-Z0-9_]*)\}?.

Q. Which strings match?

Text like $HOME matches; text like $lower 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 is one capture group, so you can read them from match[1] onwards.