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;
我想这应该可行。
重要提示:请确保这不会将网页暴露给脚本注入。如果是,说明这个方法不好,不要用
奇怪的事情...
我有一个字符串文字作为常量标记传递到我的源代码(我无法预先处理或转义它)。
示例
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;
我想这应该可行。
重要提示:请确保这不会将网页暴露给脚本注入。如果是,说明这个方法不好,不要用