A regular expression to match any occurence of "Jon", "John" or "Jonathan" in a string.
\bjo?h?n(?:athan)?\b
\b # Assert position at a word boundary
j # Match the character "j" literally
o # Match the character "o" literally
? # Between zero and one times, as many times as possible, giving back as needed (greedy)
h # Match the character "h" literally
? # Between zero and one times, as many times as possible, giving back as needed (greedy)
n # Match the character "n" literally
(?: # Match the regular expression below
athan # Match the characters "athan" literally
)? # Between zero and one times, as many times as possible, giving back as needed (greedy)
\b # Assert position at a word boundary