如何删除 Javascript 中给定字符串中的所有符号?

How to remove all symbols within a given string in Javascript?

目前我正在使用以下 Javascript 代码在我的 django 项目的基本模板中将产品标题转换为 URL-slug。

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

这是使用连续的 replaceAll() 方法将 space 替换为破折号,然后删除撇号,但我想阻止所有其他符号(例如 +=()[]$%@#... 等) 还有。

一定有更好的方法吧? 在此先感谢您的任何建议!

您可以使用正则表达式删除所有字符 /[^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代表:全局和case-insensitive

此外,我们在其中放置了一个 安全列表

在我们的例子中是数字、字符、下划线 (\w) 空格 (\s)。

所以我们的白名单之外的任何内容都会被替换为''