JavaScript / ECMAScript

JavaScript Template Literal Placeholder in JS

Match `${expression}` placeholders inside JavaScript template literals.

Try it in the JS tester →

Pattern

regexJS
\$\{([^{}]+)\}   (flags: g)

JavaScript / ECMAScript code

jsJavaScript
const re = new RegExp("\\$\\{([^{}]+)\\}", "g");
const input = "`Hello ${name}, you have ${count} items`";
const matches = [...input.matchAll(re)];
console.log(matches.map(m => m[0]));

Uses `String.prototype.matchAll` for global iteration (Node 12+ / all modern browsers).

How the pattern works

\$ matches the dollar sign. \{ matches the opening brace. ([^{}]+) captures one or more non-brace characters as the inner expression. \} matches the closing brace. The pattern won't handle nested braces (e.g. `${ {a:1}.a }`); for that you need a real parser, but this regex covers the common case.

Examples

Input

`Hello ${name}, you have ${count} items`

Matches

  • ${name}
  • ${count}

Input

const url = `https://api.com/${endpoint}?key=${apiKey}`

Matches

  • ${endpoint}
  • ${apiKey}

Input

no placeholders

No match

Same pattern, other engines

← Back to JavaScript Template Literal Placeholder overview (all engines)