【问题标题】:How to remove special characters from a string using Javascript如何使用Javascript从字符串中删除特殊字符
【发布时间】:2016-03-04 18:33:50
【问题描述】:

有人可以帮助我使用 javascript 或 Jquery 从字符串中删除特殊字符。

注意: 我只想删除一组特定的特殊字符,而不是用任何字符替换它。下面是我正在尝试的代码。提前致谢。

代码:

filename = filename.replace(/[&\/\\#,+()$~%'":*?<>{}|]/g, '').replace(/\u201C/g, '').replace(/\u201D/g, '').replace(/\s+/g, '');

示例字符串名称:

Test5 & special~, #, %, & , ,, , , , , , , , ""

实际结果:

(Test5 空格特殊------------------------空格到这里)

预期结果:

Test5 特殊

【问题讨论】:

  • 不要使用黑名单,因为转义、奇怪的编码等,它们总是会让你失望。使用字符白名单(带范围)。

标签: javascript regex replace trim


【解决方案1】:

试试这个功能:

function removeSpecialChars(str) {
  return str.replace(/(?!\w|\s)./g, '')
    .replace(/\s+/g, ' ')
    .replace(/^(\s*)([\W\w]*)(\b\s*$)/g, '$2');
}
  • 第一个正则表达式/(?!\w|\s)./g 删除任何不是单词或空格的字符。 \w 等价于 [A-Za-z0-9_]
  • 第二个正则表达式 /\s+/g 查找任何出现 1 个或多个空格并将其替换为一个空格
  • 第三个正则表达式/^(\s*)([\W\w]*)(\b\s*$)/g 修剪字符串以删除开头或结尾的任何空格。

【讨论】:

  • 谢谢@Eloy。您的解决方案完美运行。我也在尝试替换一些 unicode 的特殊字符(.replace(/\u201C/g, '').replace(/\u201D/g, ''))。请让我知道如何包含在您的正则表达式中。
  • @user545359 我编辑了答案以解决您的评论和dandavis 评论。他是对的,最好使用白名单而不是黑名单。请让我知道这是否适合您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2016-01-23
相关资源
最近更新 更多