Filter IRC messages as they appear in the buffer with search and replace. Note: This changes messages from others and not your own. To change your own messages you type before their sent, use something like AbbrevMode.

Enable this ERC module with:

    M-x customize-option RET erc-modules

Or with this Emacs Lisp:

    (eval-after-load "erc"
     '(add-to-list 'erc-modules 'replace))
    (eval-after-load "erc-replace"
      '(add-hook 'erc-insert-modify-hook 'erc-replace-insert))

Then configure the replacement with pairs like.

    (setq erc-replace-alist
          '(("damn" . "darn")))

Or provide an Sexp that ErcReplace can evaluate.

    (setq erc-replace-alist
          '(((concat "\\(?:ass\\c\\(?:ock\\|unt\\)\\|d\\(?:amn\\|ick\\)"
             . (replace-match
                (replace-regexp-in-string "[aeiou]" "*" (match-string 0))))))

The mode also takes symbols for the names of functions that return either a search string or a replacement string.

Note that if the text you replace has text properties, they might be removed by the replacement. Use (match-string 1) instead of (replace-match "\\1"), for example. Alternatively, you could use (apply 'propertize "Replacement" (text-properties-at (match-beginning 0))).