Parts of matched strings be “captured” for later use using group parentheses (). Captured groups allows you to pull out patterns from within the matched pattern and rearrange then as needed.
The index numbers for captured expressions begin to be numbered at 1 (i.e. $1, $2, $3, etc).

Greeting Example

let introduce = "Hello, my name is Joel.";
introduce.replace(/my\sname\sis\s(\w+)\./, "$1!");

> "Hello, Joel!"

Reverse Order

let string = 'abc';
string.replace(/(\w)(\w)(\w)/, "$3$2$1");

> "cba"

Decimal Pricing

let string = '5337';
string.replace(/(\d*)(\d{2})/, "$$$1.$2");

> '$53.37'

Note: Use two dollar signs $$ to print one dollar sign $.


Telephone Number

function reformatTelephone(telephone) {
  return telephone.replace(/^(\d{3})(\d{3})(\d{4})$/, "($1) $2-$3");
}

reformatTelephone("5366081470");
> "(536) 608-1470"

Make it match more inputs:

function reformatTelephone(telephone) {
  const regex = /^\D*(\d{3})\D*(\d{3})\D*(\d{4})\D*$/;
  return telephone.replace(regex, "($1) $2-$3");
}

reformatTelephone("1234567890");
reformatTelephone("(123) 456-7890");
reformatTelephone("(123)    456-7890");
reformatTelephone("( 123 )    456  -  7890");
> "(123) 456-7890"