I'm unclear exactly which technology you're using - we focus on Oracle SQL & PL/SQL here. Your terminology suggests you're using something else.
That said, part of the issue may be that the plus sign in regular expressions is an operator meaning one or more matches. If you want to match the plus character, you need to escape it. You can do this in Oracle by placing a back slash before it.
I'm also unclear why you need a regular expression. I would just replace plus with null/nothing using standard replace functions.
For example:
with rws as (
select '+1-123-4567890' phone# from dual union all
select '+44-1234-567890' phone# from dual
)
select regexp_replace ( phone#, '^+' ),
regexp_replace ( phone#, '^\+' ),
replace ( phone#, '+' )
from rws;
REGEXP_REPLACE( REGEXP_REPLACE( REPLACE(PHONE#,
--------------- --------------- ---------------
+1-123-4567890 1-123-4567890 1-123-4567890
+44-1234-567890 44-1234-567890 44-1234-567890 (The caret character means match the start of the string in regexes. So if a plus appears in the middle of a phone number for some reason, the second expression won't replace it)