profileRyan KesPGP keyI build stuffEmailGithubTwitterLast.fmMastodonMatrix

JavaScript RegExp Replace Method

replace1 is a nice way to use regexps to replace text:

console.log("papa".replace("p", "m"))
console.log("Borobudur".replace(/[ou]/, "a"))
console.log("Borobudur".replace(/[ou]/g, "a"))

You can also use awk like syntax to switch things around:

console.log(
  "Liskov, Barbara\nMcCarthy, John\nWadler, Philip".replace(
    /(\w+), (\w+)/g,
    "$2 $1"
  )
)

You can even pass a function to replace:

let s = "the cia and fbi"
console.log(s.replace(/\b(fbi|cia)\b/g, (str) => str.toUpperCase()))
let stock = "1 lemon, 2 cabbages, and 101 eggs"
function minusOne(match, amount, unit) {
  amount = Number(amount) - 1
  if (amount == 1) {
    // only one left, remove the 's'
    unit = unit.slice(0, unit.length - 1)
  } else if (amount == 0) {
    amount = "no"
  }
  return amount + " " + unit
}
console.log(stock.replace(/(\d+) (\w+)/g, minusOne))

Footnotes