Регулярное выражение для обнаружения строки, где позиция 25-27 не равна 348 - PullRequest
1 голос
/ 16 июня 2020

У меня есть следующее регулярное выражение, которое соответствует 24 di git, за которым следует 348, за которым следует di git или char

^[0-9]{24}(348)[a-zA-Z0-9]$

Мне нужно то же самое, но оно принимает все, кроме 348 в позиции 25-27. Как?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете использовать отрицательный просмотр вперед в своем регулярном выражении:

^[0-9]{24}(?!348)[0-9]{3}[a-zA-Z0-9]$

RegEx Demo

  • (?!348) - отрицательный просмотр вперед, чтобы не соответствовать, если we 348 после первых 24 цифр
  • [0-9]{3} соответствует следующим 3 цифрам в позиции 25-27
0 голосов
/ 16 июня 2020

Вы можете попробовать:

^(?!.{24}348)\d{27}[a-zA-Z\d]$

См. онлайн-демонстрацию

  • ^ - начало строки ancor.
  • (?!.{24}348) - Отрицательный просмотр вперед для 24 символов, за которыми следует 348.
  • \d{27} - 27 цифр.
  • [a-zA-Z\d] - Класс символа для одной буквы или di git.
  • $ - Конечная строка ancor.

enter image description here

Примечание: То же шаблон можно записать так: ^(?!.{24}348)[0-9]{27}[a-zA-Z0-9]$.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...