Регулярка которая проверяет промежуток в скобках

написать регулярку которая проверить есть ли в строке "{a,b}" вот такая констукция и если есть проверит что a не меньше 1 а b не больше 3 к пример, вместо 1 и 3 могут быть любые числа


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

Автор решения: OPTIMUS PRIME

let test = `
  x {0,3}
  √ {1,3}
  x {1,4}
  √ {11,3}
  √ {111,-5}
`;

console.log( test.match( /\{(\d\d+|[1-9]),(-\d+|[0123])\}/g ) );

a >= 1: (\d\d+|[1-9])
            \d от слова digit - цифра. + "один или больше совпадений"
            \d\d+ - двузначное число, или больше.
            | или числа от 1 до 9.

b <= 3: (-\d+|[0123])\}
            -\d+ любое отрицательное (целое) число
            или числа 0, 1, 2, 3.

→ Ссылка
Автор решения: ReinRaus
  1. Регулярными выражениями нельзя сравнить числа. Регулярные выражения служат для поиска заданного шаблона в тексте. Обработку чисел необходимо производить программно.

  2. Ниже приведен пример обработки чисел программно. В консоль выводятся найденные числа и результат сравнения первого со вторым.

let text = `
 {0,3}
 {1,3}
 {1,4}
 {11,3}
 {111,-5}
`;
let regex = /\{(-?\d+),(-?\d+)\}/g;
let process = ( groups ) => {
    let g1 = parseInt( groups[1] );
    let g2 = parseInt( groups[2] );
    console.log( g1, g2, g1 > g2 );
};

for ( let oneMatch of text.matchAll( regex ) ) process( oneMatch );

→ Ссылка