2013-09-03 2 views
1

Я использую регулярное выражение для покрытия международных телефонных номеров & некоторый номер абонента, который может быть в этом формате толькоРегулярного выражения для asp.net для чисел Международных и местных телефонных

Международного Номер телефона

+123 456789123 
+123456789123 

+12 3456789123 
+123456789123 

Локальный формат номер телефона (мобильный нет. а затем по номерам наземных линий)

1234567890  
123 4567890 

123123456 
12 3123456 

Регулярное выражение, которое И.А. м с использованием

^[\+]{0,1}[1-9]{1}[0-9]{7,11}$ 

Это регулярное выражение хорошо работает с международными номерами только независимо от префикса + добавляются или нет, но не допускает никакого пробела времени.

Я хочу, чтобы поддержать вышеупомянутые форматы, как показано в примере, а также должны поддерживать все международные телефонные номера

я работаю на asp.net только в том случае, если кто-то хочет знать.

UPDATE:

я, наконец, в конечном итоге, используя следующий Regex, который также обрабатывает добавочному

^([\+]?[0-9]{1,3}[\s.-][0-9]{1,12})([\s.-]?[0-9]{1,4}?)$ 

ответ

2

Попробуйте это:

^[\+]?[1-9]{1,3}\s?[0-9]{6,11}$ 
+0

doen't работы на '+12 3456789123 ' – Learning

+0

@KnowledgeSeeker обновлен, потому что' {3} '(фиксированная длина) должна быть' {1,3} '(переменная длина). –

4

Привет некоторый комментарий о вы регулярное выражение

[\+]{0,1} could be \+? // easier to read, + as optional 
[1-9]{1} could be writen as [1-9] 
[0-9]{7,11} should be [0-9\s.-]{7,11} // phone numbers van contain - or . 

Вы суммарно регулярное выражение будет

^\+?[1-9][0-9\s.-]{7,11}$ 

номера телефонов может быть прописан как

  • 070-3233123
  • 070.3233123

ВТОРАЯ ПОПЫТКА

Вы могли бы сломать Youre проблемы в 2 этапа:

Первый матч номер possibele телефона за счет увеличения диапазона от 11 до 20

^\+?[1-9][0-9\s.-]{7,20}$

Следующим шагом является Ove не являющиеся числа и проверить, длина составляет от 8 до 12

string phone = "070.3233123"; 

string onlyNumbers= new String(phone.ToCharArray().Where(c => Char.IsDigit(c)).ToArray()); 

if (onlyNumbers.length > 8 && onlyNumbers.length < 12) 
{ 
    // we got a winner 
} 
+0

+1 для чистого ответа, я попробовал Это не работает для '+ 123-456789123',' +123 456789123' – Learning

+0

yep хорошая точка, вы хотите 7 до 11 номеров и между пробелами. или - из() символов, ведьма не считается числом от 7 до 11 ... позвольте мне подумать об этом – lordkain

+1

обновленный пример – lordkain

-1

Ниже шаблон будет проверять следующий формат

^\s*\+?[0-9]\d?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$ 

Результаты

+1 (281) 388 0388 
+65 281 388-0388 
+91 281 388 0388 
+65 2813880388 
+652813880388 
+65(281)3880388 
+65281388-0388 
+1281388-0388 
Смежные вопросы