Требуется регулярное выражение, заменяющее все знаки кроме первого минуса и чисел на ""

Рейтинг: 1Ответов: 1Опубликовано: 23.03.2023

     const text = "a-a1s2d3f-4g5h-6i-j-7k8l9";
     const result = text.replace(/[^-\d]+/g, "");

     console.log(result);

Моя регулярка выводит -123-45-6--789 Должно получиться: -123456789 Пробовал разные, не могу подобрать

Ответы

▲ 3Принят

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

const text = "a-1s2d3f-4g5h-6i-j-7k8l9";
const result = text.replace(/^[^\d-]*(-)|\D/g, "$1");
console.log(result);

См. пример использования регулярного выражения.

Подробности

  • ^ - начало строки
  • [^\d-]* - ноль и более символов, отличных от цифр и -
  • (-) - Подмаска №1: - ($1 в шаблоне замены восстанавливает дефис, если он был найден в оригинальной строке)
  • | - или
  • \D - символ, отличный от цифры.