在string - javascript中转义反斜杠

Escaping backslash in string - javascript

本文关键字:转义 string javascript      更新时间:2023-09-26

我需要显示当前选定文件的名称(在<input type="file">元素中)。

一切都很好,唯一的问题是我得到了这种字符串"C:'fakepath'typog_rules.pdf" (browset自动将此作为输入元素的值)。

当我尝试通过'''''''分割字符串时,由于未转义斜杠而失败。尝试匹配/替换斜杠也会失败。有办法解决这个问题吗?我需要这个工作至少在Opera和IE(因为在其他浏览器中,我可以使用FileReader)

如我得到"C:'fakepath'typog_rules.pdf"作为输入,并希望得到"typog_rules.pdf"作为输出。

出于安全原因,不可能获得通过<input type="file" />元素引用的文件的真实完整路径。

这个问题已经提到了,并且链接到关于这个主题的其他堆栈溢出问题。


之前的答案,保留作为将来通过标题,标签和问题到达本页的访问者的参考。
反斜杠必须转义

string = string.split("''");

在JavaScript中,反斜杠用于转义特殊字符,如换行符('n)。如果你想使用文字反斜杠,必须使用双反斜杠。

所以,如果你想匹配两个反斜杠,必须使用四个反斜杠。例如,alert("''''")将显示一个包含两个反斜杠的对话框。

转义反斜杠字符

foo.split('''')

我认为这更接近你正在寻找的答案:

<input type="file">
$file = $(file);
var filename = fileElement[0].files[0].name;

有点粗糙,但它可以工作:

const input = ''text';
const output = JSON.stringify(input).replace(/((^")|("$))/g, "").trim();
console.log({ input, output });
// { input: ''text', output: '''text' }

为元素添加一个输入id,并执行如下操作:

document.getElementById('inputId').value.split(/[''$]/).pop()