Перечисление в регулярном выражении

Есть некое перечисление в строке, например:

TSTK-345, TSTK-9995, TSTK-1 И т.п.

как проверить с помощью регулярного выражения что в строке есть запятая, при том что строка может содержать при первой записи только TSTK-345 и рег. выражение должно пропускать первое вхождение значения в строку, но не пропускать если будет "TSTK-345TSTK-9995", а пропускать если будет "TSTK-345, TSTK-9995, TSTK-1 И т.п."


Ответы (1 шт):

Автор решения: PotroNik

Регулярное выражение

^TSTK-345(?:, ?TSTK-\d+)*$

Раз уж ЯП не заполнен, то приведу пример работы на js:
Передаем 5 строки:

TSTK-345,TSTK-9995,TSTK-1
TSTK-345
TSTK-345TSTK-9995
TSTK-345 TSTK-9995
TSTK-345, TSTK-9995, TSTK-1

const regex = /^TSTK-345(?:, ?TSTK-\d+)*\h*$/gm;
const str = `
TSTK-345,TSTK-9995,TSTK-1
TSTK-345
TSTK-345TSTK-9995
TSTK-345 TSTK-9995
TSTK-345, TSTK-9995, TSTK-1
`;
result = str.match(regex);
console.log(result);


Подробности:
^TSTK-345(?:, ?TSTK-\d+)*$
^ - символ начала строки
TSTK-345 - статичный набор символов
(?:...)* - не захватываемая группа, нужна для указания последовательности 0 и более раз
, ? - запятая и один или ноль символов пробела
TSTK- - статичный набор символов
\d+ - одна и более цифр
$ - конец строки

→ Ссылка