Как настроить общее количество символов в регулярных выражениях? - PullRequest
0 голосов
/ 23 октября 2019

Предположим, у меня есть строка чисел, длина которой равна 4.

const example = "1234";

Мне нужно убедиться, что все следующие шаблоны действительны:

1-2-3-4
1234
12-34
1-234
123-4

Я устанавливаю свой первыйи последние символы должны быть числами. Таким образом, остается 3 возможных места для символа "-". Вот что у меня сейчас:

\d{1}[-]? (\d[-]?){0,2} [-]?\d{1}

Кажется, это работает правильно. Тем не менее, он также заканчивает сопоставлением строк, таких как

12

, которые не соблюдают правило строки длиной 4 символа. Как мне применить общую длину символа здесь?

1 Ответ

3 голосов
/ 23 октября 2019

Ваш шаблон разрешит 12, потому что эта часть (\d[-]?){0,2} может совпадать 0, 1 или 2 раза, и только первая и последняя цифры не являются обязательными.

Вы можете использовать повторяющуюся группу снеобязательный -

Обратите внимание, что вы можете опустить {1}

^\d(?:-?\d){3}$
  • ^ Начало строки
  • \d Соответствовать цифре
  • (?:-?\d){3} Повторите 3 раза, сопоставляя необязательный - и цифру
  • $ Конец строки

Regex demo

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