Member 11570633 Ответов: 2

Регулярное выражение в C# для номера телефона


у меня есть это выражение для сопоставления телефонных номеров:
Цитата:
@"(\+[0-9]{2}|\+[0-9]{2}\(0\)|\(\+[0-9]{2}\)\(0\)|00[0-9]{2}|0)([0-9]{9}|[0-9\-\s]{9,18})";



но я хочу идентифицировать немецкий номер телефона из текстового файла:
форматы: 0176/21425679
0157764123813
09621 11 85 45
0172 8622111
08103 / 30 444 30
+49 176 3123 8343

как можно идентифицировать эти типы телефонных номеров.
выражение моего лица работало, но не совсем.

Что я уже пробовал:

<pre>@"(\+[0-9]{2}|\+[0-9]{2}\(0\)|\(\+[0-9]{2}\)\(0\)|00[0-9]{2}|0)([0-9]{9}|[0-9\-\s]{9,18})";



С#

PIEBALDconsult

И разве у них нет ничего похожего на 1-800-цветы?

2 Ответов

Рейтинг:
5

Patrice T

Цитата:
как можно идентифицировать эти типы телефонных номеров.

Вы никогда не можете знать, является ли номер номером телефона или выглядит как номер телефона, это зависит от контекста.
Насколько я знаю, немецкий номер телефона поставляется с разным количеством цифр.
+49-это международный заголовок в Германию.
Пробелы и тире являются искусственными разделителями в зависимости от пользователя, и группировка может отличаться, чтобы облегчить запоминание номера.
Я бы попробовал что-то вроде:
((\+49[ /]*)?(\d[ /]*){10,11}\d)

Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Member 11570633

Спасибо за работу.

Patrice T

Можете ли вы принять один из ответов, он скажет всем, что вопрос решен.

Member 11570633

Принятая благодарность.

Patrice T

Спасибо

Рейтинг:
2

Jochen Arndt

Во первых это зависит от того что вам нужно:
Просто проверьте, является ли это действительным (немецким) номером телефона, или получите номер в определенном формате.

В любом случае было бы лучше разделить обработку на несколько частей.

Таким образом, вы можете, например, сначала заменить необязательный международный префикс одним "0":

/^\+[0-9]{2}[^0-9]*/0/
# or
/^\+[0-9]{2}[ -/]*/0/
Если вам нужно получить код города отдельно, ищите следующий нецифровый символ. Но это не будет работать для всех входов.

Наконец, удалите все символы разделения / разделителя (пробел, минус, косая черта). Последняя строка должна содержать только цифры и может быть проверена на min. и Макс тоже. допустимая длина.