Требуется регулярное выражение для проверки номера IC - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно подтвердить 12-значный номер .В котором

1-я и 2-я цифры = менее 100 3-я и 4-я цифры = от 1 до 12 5-я и 6-я цифры = от 1 до 31 И остальные6 цифр могут быть любыми числами от 0 до 9

Пример 190131958103

Может кто-нибудь дать мне регулярное выражение, которое удовлетворяет вышеуказанной проверке?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы можете попробовать этот помощник

^\d{2}(?:0[1-9]|1[0-2])(?:[0-1]|[1-2][0-9]|[3][0-1])\d{6}$

Если вы не хотите использовать \d

 ^[0-9]{2}(?:0[1-9]|1[-2])(?:[0-1]|[1-2][0-9]|[3][0-1])[0-9]{6}$

Объяснение

  • ^ - начало строки.
  • \d{2} - сопоставление любых двухзначных чисел.
  • (?:0[1-9]|1[-2]) - группа без захвата.Совпадает с любым числом от 1 до 12.
  • (?:[0-1]|[1-2][0-9]|[3][0-1]) - Группа без захвата.Соответствует любому числу от 1 до 31.
  • \d{6} - соответствует любому шестизначному числу.
  • $ - конец строки.

PS - Я предлагаю использовать группу без захвата.Потому что вы замечаете, что в своем регулярном выражении вы снова используете группу где-либо еще. Это улучшит производительность.

Демо

0 голосов
/ 07 декабря 2018

2-значное значение по определению меньше 100 (максимальное значение - 99), поэтому вам не нужно проверять это.Это регулярное выражение удовлетворит ваши другие потребности:

^\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{6}$

Он начинается с любых 2 цифр;затем либо 01-09, либо 10-12;сопровождаемый одним из 01-09, 10-19, 20-29 или 30-31;затем 6 цифр.

Демонстрация по регулярному выражению 1011

Обновление

Если вы не можете использовать \d в своемшаблон, замените его на [0-9] т.е.

^[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])[0-9]{6}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...