Use this fix:
(?:(?:\+\(?[0-9]{1,3}|\(?\b[0-9]{4})\)?)?\s*\)?[-\s.]?\(?[0-9]{1,3}\)?[-\s.]?[0-9]{3}[-\s.]?[0-9]{3,4}
See proof.
Explanation
--------------------------------------------------------------------------------
(?: group, but do not capture (optional
(matching the most amount possible)):
--------------------------------------------------------------------------------
(?: group, but do not capture:
--------------------------------------------------------------------------------
\+ '+'
--------------------------------------------------------------------------------
\(? '(' (optional (matching the most
amount possible))
--------------------------------------------------------------------------------
[0-9]{1,3} any character of: '0' to '9' (between
1 and 3 times (matching the most
amount possible))
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
\(? '(' (optional (matching the most
amount possible))
--------------------------------------------------------------------------------
\b the boundary between a word char (\w)
and something that is not a word char
--------------------------------------------------------------------------------
[0-9]{4} any character of: '0' to '9' (4 times)
--------------------------------------------------------------------------------
) end of grouping
--------------------------------------------------------------------------------
\)? ')' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
)? end of grouping
--------------------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
\)? ')' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
[-\s.]? any character of: '-', whitespace (\n, \r,
\t, \f, and " "), '.' (optional (matching
the most amount possible))
--------------------------------------------------------------------------------
\(? '(' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
[0-9]{1,3} any character of: '0' to '9' (between 1
and 3 times (matching the most amount
possible))
--------------------------------------------------------------------------------
\)? ')' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
[-\s.]? any character of: '-', whitespace (\n, \r,
\t, \f, and " "), '.' (optional (matching
the most amount possible))
--------------------------------------------------------------------------------
[0-9]{3} any character of: '0' to '9' (3 times)
--------------------------------------------------------------------------------
[-\s.]? any character of: '-', whitespace (\n, \r,
\t, \f, and " "), '.' (optional (matching
the most amount possible))
--------------------------------------------------------------------------------
[0-9]{3,4} any character of: '0' to '9' (between 3
and 4 times (matching the most amount
possible))