2016-11-17 4 views
0

Я пытаюсь выполнить проверку регулярного выражения для номера паспорта.Regex для номера паспорта

Мое требование

  1. Длина должна быть не менее 3-х символов до максимум 20 символов.
  2. не должны быть только 0-х

Я попытался с ниже регулярным выражением

^(?! 0 {3,20}) [A-Za-Z0-9] {3, 20} $

Это, похоже, работает для большинства случаев, но если мой текст содержит 3 или более ведущих нулей, он, похоже, терпит неудачу. Например, «00000001».

Пример Матчи

  • 101AE24 - Работа, как ожидается
  • 00 - Не работает, как ожидалось
  • - Работа, как и ожидалось
  • 00001 - Не работает (но он также должен быть матч)

Любая помощь будет очень признательна.

+0

Это должно быть регулярное выражение? Вы можете решить эту проблему, предварительно проверив длину, а затем убедитесь, что у вас есть хотя бы 1 или более из следующих [A-Za-z1-9] ' – Alan

+0

для длины^[0-9] {3,20} $ и затем проверьте Convet.ToInt32 (значение) == 0 –

+0

@viveknuna Строка может иметь альфа-символы. – Alan

ответ

4

Как насчет этого?

^(?!^0+$)[a-zA-Z0-9]{3,20}$ 

Вместо того, чтобы сказать «отвергнуть значения с 3-20 нулями», мы можем только сказать: «все, что только содержит нули отклонять (независимо от длины, так как < 3 и> 20 терпеть неудачу в любом случае)

+0

Отлично !!! Работали как обаяние. Спасибо ! – Dinny

+0

@ Dinny Не беспокойтесь – Rob

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