Как в регулярном выражении указать запятую, после которой идёт пробел

Как сделать, чтобы регулярка

RegExp("(0|[1-9][0-9,]*)", "g")

Игнорировала запятую, после которой идёт пробел, а с остальными работала так же, как и раньше.


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

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

Поскольку опциональная часть с запятой может быть только одна (если это разделитель дробной части, а не разделитель порядков), возможно, этого хватит:

console.log(
  "1? 2! 3,3, 4".match(
    /0|[1-9]\d*(?:,\d+)?/g
  )
);

→ Ссылка
Автор решения: Wiktor Stribiżew

По видимому, нужно найти последовательность чисел без начальных нулей.

В таком случае необходимо использовать

const text = "1? 2! 3,3, 4";
const intrx = String.raw`(?:0|[1-9]\d*)`;
console.log(text.match(RegExp(`${intrx}(?:,${intrx})*`, 'g')))

Регулярное выражение будет выглядеть так:

/(?:0|[1-9]\d*)(?:,(?:0|[1-9]\d*))*/g

Подробности

  • (?:0|[1-9]\d*) - 0 или цифра от 1 до 9 а потом ноль и более любых цифр
  • (?: - начало незахватывающей подмаски:
    • , - запятая
    • (?:0|[1-9]\d*) - 0 или цифра от 1 до 9 а потом ноль и более любых цифр
  • )* - ноль и более повторов

См. пример работы выражения.

→ Ссылка