javascript - 从文件名javascript中删除非法字符

标签 javascript html

我已经看过有关此主题的各种帖子,但是当我执行以下操作时,我得到了一个奇怪的结果:

var dirtyString = '<>I\really|\re\ad?"the/wh\ole*:da|\y?.'
var cleanString = dirtyString.replace(/[\/:*?"<>|.]/g, "");
console.log(cleanString);

它删除了所有非法字符,但“r”字母也被删除。在控制台日志中,我收到“Ieallyeadthewholeday” 似乎“r”之前的“\”删除了“r”。 “\”不会删除它之前的其他字母。我错过了什么吗?

最佳答案

如果您尝试 console.log(dirtyString),您还会发现您的“r”也“缺失”。

这是因为“\r”实际上是回车符的转义序列(代码 13)。你的replace()对此没有任何作用。它仍然存在,只是没有显示。尝试使用 String.charAt()String.charCodeAt(),您会看到该 Angular 色仍然存在。

顺便说一句,您正在尝试删除“列入黑名单”的字符,而列入黑名单几乎从来都不是正确的方法。正如您在自己的情况下所看到的,您忘记将“\r”字符(以及许多其他字符)列入黑名单。白名单更安全。例如,您可能决定只接受拉丁字母和数字,然后删除所有未列入白名单的内容: var cleanString = dirtyString.replace(/[^a-z0-9]/gi, ""); .

关于javascript - 从文件名javascript中删除非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412612/

相关文章:

javascript - 传单 - 互动 map - 添加事件

javascript - 如何使变量在类的方法中可用?

javascript - ReactNative listview 初始状态

html - div 是自己赚的吗?

html - 将标签与 CSS 中的单选按钮顶部对齐

css - 我的 div 没有留在我的 div 容器内

javascript - 带有 JavaScript 的日期时间范围分隔符适用于除少数范围之外的所有范围

javascript 变量未设置 - 通过 Firebug 检查

javascript - 跨源 XMLHttpRequest iFrame "Mini Browser"

Javascript 为不同的屏幕分辨率加载 css 样式不起作用