Javascript 如何在字符串文字中转义 \u

Javascript How to escape \u in string literal

奇怪的事情...

我有一个字符串文字作为常量标记传递到我的源代码(我无法预先处理或转义它)。

示例

var username = "MYDOMAIN\tom";
username = username.replace('MYDOMAIN','');

某处的字符串包含反斜杠后跟一个字符。 此时转义反斜杠为时已晚,所以我必须像

这样单独转义这些特殊字符
username = username.replace(/\t/ig, 't');

但是,这在以下情况下不起作用:

var username = "MYDOMAIN\ulrike";

\u好像引入了一个unicode字符序列。 \uLRIK 无法解释为 unicode 符号,因此 Javascript 引擎此时停止解释,我的 replace(/\u/ig,'u') 来得太晚了。

有没有人对如何转义给定字符串文字中包含的此类非 unicode 字符序列提出建议或解决方法? \b 似乎与 "MYDOMAIN\bernd".

中的问题类似

I have a string literal that is passed to my source code

假设您没有任何 < 或 >,将其移动到 HTML 控件(而不是脚本块内)或元素内,并使用 Javacript 读取值。像

<div id="myServerData">
   MYDOMAIN\tom
</div>

然后你检索它

alert(document.getElementById("myServerData").innerText);

重要:注入未转义的内容,用户可以控制内容(比如这是在其他页面中输入的数据)是一种安全风险。这适用于您是将其注入脚本还是 HTML

var username = "MYDOMAIN\ulrike";会抛出语法错误。我想你从某个地方得到了这个字符串。

我建议创建一些 html 元素并将其 innerHTML 设置为接收到的值,然后将其拾取。

有类似的东西:

<div id="demo"></div>

然后document.getElementById("demo").innerHTML = username;

然后从那里读取值 document.getElementById("demo").innerHTML;

我想这应该可行。

重要提示:请确保这不会将网页暴露给脚本注入。如果是,说明这个方法不好,不要用