Javascript用\x(charcode)替换32位以下的字符

标签 javascript

未显示 0x20 以下的字符,因此我想将它们转义为“\x0D”,例如。

目前,我正在使用:

str = str.replace(/([\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f])/,function(b){
                    var b = b.charCodeAt();
                    return '\\x'+(b<16?'0':'')+b.toString(16).toUpperCase();
                });

还有更好的办法吗?最初,我在做:

str = escape(str).replace('%(\d\d)','\\x$1');

..但它转义了值大于 32 的字符。

最佳答案

范围。

/[\x00-\x1f]/

另请注意,我删除了括号 - 使用 $& 来获取整个模式,而不是 $1

关于Javascript用\x(charcode)替换32位以下的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307884/

相关文章:

javascript - 为什么我们在 `Number.prototype.valueOf` 函数内部使用 `map()`

javascript - 关闭 - 库未正确加载

javascript - 使用 jQuery 获取列中的第一个表格单元格值

javascript - 基于用户输入的动态网站内容

php - 将javascript变量添加到html div标签

javascript - 模块模式上下文问题

javascript - 在树布局中对 d3 js 中的不同链接使用不同的类

javascript - 使用 javascript 或 jquery 使用表单所在的 URL 从另一个表单访问、填写和提交表单

javascript - 自定义谷歌登录按钮并使用服务器数据库进行身份验证

javascript - jquery忽略子元素