Поиск регулярного выражения для формата идентификатора с дефисами - PullRequest
2 голосов
/ 21 сентября 2019

Я пытаюсь подтвердить идентификатор с помощью регулярных выражений.Идентификатор имеет следующий формат:

alphaNumeric-alphaNumeric-alphaNumeric (общая длина должна быть 14, и должно быть два дефиса)

Ниже приведены примеры допустимых форматов

AS12-AS12-AB1C

AS-12ASBC-1234

N-IKNKL-A2LI40

Здесь подвохЭто дефисы не должны прийти в начале, а также в конце.И также никакие два дефиса не должны быть вместе.

До сих пор я использую положительный взгляд вперед, чтобы сделать совпадение длины (?=^.{14}$).И сопоставление другой логики дефисов, используя (?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+.Таким образом, я использую регулярное выражение:

(?=^.{12}$)(?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+

И проблема здесь в том, что дефисы могут появляться как в начале, так и в конце, а также могут образовываться два дефиса, оба из которых не должны бытьдействителен, и это противоречит моей проверке удостоверения личности.

1 Ответ

1 голос
/ 21 сентября 2019

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

^(?=.{14}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+){2}$

Демонстрация RegEx

Подробности RegEx:

  • ^: начало матча
  • (?=.{14}$): условие прогнозирования, позволяющее утверждать, что у нас есть точные 14 символов ввода
  • [a-zA-Z0-9]+: совпадение 1 или более буквенно-цифровых символов
  • (?:: создать группу без захвата
    • -: сопоставить дефис
    • [a-zA-Z0-9]+: после 1 или более буквенно-цифровых символов
  • ){2}: конец группы без захвата.Матч 2 экземпляра этой группы
  • $: конец матча
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...