I was not too fond of regular expressions, considering them as a strange and mysterious beast. But lately, I've been forced to use all their powers, so I get used to them.
From my experience, if you want to understand regular expressions, you have to find a good description, which I have found in O'Reilly's book "C# 3.0" by Joseph and Ben Albahari. An excellent chapter about regular expressions.
First, it has method test(string) - which returns true if it finds regular expression in the source text (matched) or false otherwise.
Second, it has method exec(string) - which extracts everything that is matched. It returns an array of results.
Third, and most importantly, we can use RegExp to replace the string by calling source_string.replace(regex, replace_string).
Below is the calculator which allows you to play with regular expressions. You should enter source text, regular expression, modifiers (used in replacement), and replacement expression. After that, you will get calls to test, exec, and replace upon source text.
By default, it extracts all digits which look like phone numbers and formats them.