Я пытаюсь удалить пробелы в начале и конце входной строки, заменить более 1 пробела одним пробелом и удалить все специальные символы. Фрагмент (прилагается) работает, но я просто хотел спросить, есть ли способ, которым я могу сделать это немного менее э-э ... некрасиво? Должен быть лучший способ написать это, верно?

const filterInput = (vals) => {
  console.log(vals.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ').replace(/[^\w ]/g, ""));
};

filterInput(" squid*^%ward     sponge((bob        ")
2
Aaron Summers

1 ответ

trim () сначала строка вместо использования .replace :

const filterInput = (vals) => {
  const result = vals
    .trim()
    .replace(/\s+/g, ' ')
    .replace(/[^\w ]/g, '');
  console.log(result);
};

filterInput(" squid*^%ward     sponge((bob        ")

Вы можете свести его к одному регулярному выражению, но это было бы не так легко для чтения:

const filterInput = (vals) => {
  const result = vals
    .trim()
    .replace(/\s+|\W/g, s => s[0] === ' ' ? ' ' : '');
  console.log(result);
};

filterInput(" squid*^%ward     sponge((bob        ")
58583936