RegEx для сопоставления буквенно-цифрового шаблона с квантификатором - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь ограничить цифры от 4 до 6 в моем регулярном выражении, но он не работает

Минимальный диапазон работает, но максимальный диапазон не работает:

  • Some Text-1 = проверяет
  • Some Text-201901 = проверяет
  • Some Text-20190101 = проходит проверку там, где должно произойти сбой

Теперь, если я добавлю $ в конце, то нетиз вышеперечисленных работ.

Любая помощь будет высоко ценится.

Код:

^[A-Z ]{3,}-\d{4,6}

Ответы [ 2 ]

1 голос
/ 31 мая 2019

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

^[A-Z ]{3,}-[0-9]{3,6}(?!\d)

Детали

  • ^ - начало строки
  • [A-Z ]{3,} - три или более заглавных букв или пробела
  • - - дефис
  • [0-9]{3,6} - от трех до шести цифр
  • (?!\d) - отрицательный прогноз , который не соответствует совпадению, если непосредственно справа от текущего местоположения есть цифра.
0 голосов
/ 31 мая 2019

Я не совсем уверен, что мы могли бы пропустить и потерпеть неудачу, однако, исходя из вашего исходного выражения, я предполагаю, что это может быть тем, с чего мы могли бы начать с флага i:

^[A-Z ]{3,}-\d{1,6}$

или без i флаг:

^[A-Za-z ]{3,}-\d{1,6}$

Демо

Тест

const regex = /^[A-Z ]{3,}-\d{1,6}$/gmi;
const str = `Some Text-1
Some Text-201901
Some Text-20190101`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

RegEx

Если это выражение нежелательно, его можно изменить / изменить в regex101.com .

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

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