/(?<!^)\+|[^\d+]+//g
удалит все не-числа и оставит ведущий +
в покое. Обратите внимание, что ведущий пробел приведет к сбою бита «оставить +
в покое». В языках .NET это может быть включено в регулярное выражение, в других вы должны сначала удалить пробелы перед передачей строки в это регулярное выражение.
Пояснение:
(?<!^)\+
: соответствует +
, если только оно не находится в начале строки. (В .NET используйте (?<!^\s*)\+
, чтобы указать начальные пробелы).
|
или
[^\d+]+
: соответствует любой серии символов, которые не являются ни числами, ни +
.
До (с использованием (?<!^\s*)\+|[^\d+]+
):
+49 (123) 234 5678
+1 (555) 234-5678
+7 (23) 45/6789+10
(0123) 345/5678, ext. 666
После того, как:
+491232345678
+15552345678
+72345678910
01233455678666