Use
^\+[0-9]{1,3} ?[0-9]{10}$
See regex proof.
EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
\+ '+'
--------------------------------------------------------------------------------
[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))
--------------------------------------------------------------------------------
[0-9]{10} any character of: '0' to '9' (10 times)
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
PHP:
preg_match('/^\+[0-9]{1,3} ?[0-9]{10}$/', $string)
JavaScript:
/^\+[0-9]{1,3} ?[0-9]{10}$/.test(string)