Javascript Regex: проверить строку на наличие повторяющегося шаблона, не выполнить тест, если какой-либо шаблон не соответствует - PullRequest
1 голос
/ 24 января 2020

Моя строка содержит повторяющийся шаблон от 0 до 100 раз.

Шаблон x 1 выглядит следующим образом: «40: 0040» Шаблон x 2 выглядит так: «40: 0040; 50: 0050» Шаблон x 3 выглядит так: «40: 0040; 50: 0050; 55,0055;» <<< - FAIL THIS PATTERN </p>

Я потратил много времени, но все еще не могу создать правильный тест REGEX ... Моя последняя попытка ниже:

var validPattern = /(\d*:\d{4};*)?/g;

if ( validPattern.test("40:0040;50:0050.55:0055;60:0060;70:0070;80:0080;90:0090;100:0100") ){
  alert("good");
} else {
  alert("bad");
}

1 Ответ

1 голос
/ 24 января 2020

Вы можете использовать

var validPattern = /^(?:\d+:\d{4}(?:;\d+:\d{4}){0,99})?$/;

Это следует за ^(?:BLOCK(?:;BLOCK){0,MAX_OCC-1})?$ "шаблоном".

  • ^ - начало строки
  • (?: - начало необязательной группы без захвата:
    • \d+:\d{4} - шаблон BLOCK: 1+ цифр, : и 4 цифры
    • (?:;\d+:\d{4}){0,99} - от 0 до 99 вхождений ; и паттерн BLOCK
  • )? - конец группы, 1 или 0 вхождений устанавливается с помощью квантификатора ?
  • $ - end

См. демонстрационную версию regex .

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