2013-11-25 4 views
0

Я новичок в использовании регулярного выражения в C#, и я пытаюсь использовать его для проверки номера телефона с этим форматом 09oxoxxxxxx, где x может быть любым числом и o может быть только 1-9, а общая длина должна составлять 11 номеров. Вот что я думаю, что, вероятно, неправильно.Regex для определенного формата

if (Regex.IsMatch("09203041152", "^[0]{1}[9]{1}[1-9]{2}[1-9]{1}[0-9]{6}")) 
+0

* не должно быть 11 * или * должно быть 11 *? –

+0

Извините, была опечатка, исправлена ​​ –

ответ

1

Следующая RegExp должны соответствовать формату вы указывали '' 09oxoxxxxxx

^09[1-9][0-9][1-9][0-9]{6}$ 
+0

Спасибо, человек, работает как шарм –

2

Вы можете использовать сокращенный характер \d который представляет любое количество [0-9]:

Regex.IsMatch("09203041152", @"^09[1-9]\d[1-9]\d{6}$") 

Вашей скороговорка не работает из-за повторения рассчитывать {2} здесь:

^[0]{1}[9]{1}[1-9] {2}[1-9]{1}[0-9]{6}

Это требует два ненулевых числа в строке. Но вам нужно одно ненулевое число и одно любое число в этом месте:

^[0]{1}[9]{1}[1-9] {1} [0-9] {1}[1-9]{1}[0-9]{6}

Примечание. Вам не нужно указывать число повторений, равное {1}, потому что это означает, что это однократное появление токена, которое является истинным, не указывая явно.

+0

Спасибо за объяснение, почему она не работает. по какой-то причине ваш пост не был здесь, когда я проверил ответы: \ up проголосовали –

+0

@arashmoeen, возможно, вы не обновили браузер :) –

+1

Если бы я добавил какой-то ответ, я бы никогда не пытался объяснить, как код OP был неправильным , +1 для этого :) иногда лучший ответ - не принятый ответ. –

1

Регулярное выражение является немного более сложным, что он должен быть:

^09[1-9][0-9][1-9][0-9]{6}$ 
  • ^: Матч старт-линии.
  • 09: Соответствует номеру 0, а затем 0.
  • [1-9]: Соответствует любому номеру между 1 и 9.
  • [0-9]: Соответствует любому номеру между 0 и 9.
  • [1-9]: Опять же, любое число между 1 и 9.
  • [0-9]{6}: Соответствует любому номеру между 0 и 9 шесть раз.
  • Теперь общее количество цифр соответствует 11.
+0

извините Уди было быстрее, но я проголосовал за объяснение структуры, очистил много вещей для меня. Спасибо, кучка –

+0

@arashmoeen Да, он был. Не беспокойтесь об этом, пожалуйста. –

Смежные вопросы