Как удалить все символы в заданной строке в Javascript?

В настоящее время я использую следующий код Javascript для преобразования названия продукта в URL-слог в базовом шаблоне моего проекта django.

document.getElementById("title").onkeyup = function () {
    document.getElementById("url_slug").value = document
      .getElementById("title")
      .value.toLowerCase()
      .replaceAll(" ", "-")
      .replaceAll("'", "")
  };

Это использование последовательных методов replaceAll() для замены пробела на тире и удаления апострофов, но я хотел бы предотвратить все другие символы (например, +=()[]$%@#... и т.д.), а также.

Наверняка есть лучший способ? Заранее спасибо за любые предложения!

Вы можете удалить все символы с помощью regex выражения /[^A-Za-z0-9]/g

document.getElementById("title").onkeyup = function () {
    document.getElementById("url_slug").value = document
      .getElementById("title")
      .value.toLowerCase().replace(/[^A-Za-z0-9]/g,'')
      .replaceAll(" ", "-")
      .replaceAll("'", "")
  };

Что-то вроде этого?

let stringToReplace = '12+3%42()S$%\|#s'
let desired = stringToReplace.replace(/[^\w\s]/gi, '')

Символ (^) является отрицанием всего, что входит в набор [...],

gi означает: глобальный и нечувствительный к регистру

Плюс мы поместили safelist туда:

В нашем случае цифры, символы, подчеркивания (\w) пробелы (\s).

Итак, все, что находится вне нашего белого списка, заменяется на ''

Вернуться на верх