gpt4 book ai didi

javascript - 正则表达式 unicode 范围 [uXXXX] 未使用 ajax 识别

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:27 24 4
gpt4 key购买 nike

我正在尝试删除ajax响应字符串中存在的控制字符(例如:\u0005)。我使用的正则表达式是: msg = msg.replace(/[\x00-\x1F\x7F-\x9F]/g, '');

当我将字符串静态分配给变量时,正则表达式可以工作,但相同的表达式在我的 ajax 调用中不起作用。

// send command
$.ajax({
type: "POST",
cache: false,
url: "/data/test.txt",
dataType: 'text',
data: tmpCommand
})
.done( function(msg){

//remove C1 and C0 control characters from response string
msg = msg.replace(/[\x00-\x1F\x7F-\x9F]/g, ''); //not working
//msg = msg.replace(/[\u0000-\u0009]/g, ''); //not working
//msg = msg.replace(/\\u0005/g, ""); //working


response= $.parseJSON(msg);
console.log(response);

})
.always(function(msg){

});

下面的响应是 JSON 字符串。例如:{"name1":"\u0005ABC","name2":"\u0005fgav"}

可能是什么问题?

最佳答案

I am trying to remove control characters (eg:\u0005) present in ajax response string.
The response is a JSON string, for example

{"name1":"\u0005ABC","name2":"\u0005fgav"} 

What could be the issue?

响应文本中没有控制字符。响应文本是 JSON,其中包含您要查找的控制字符的转义序列。没有单个查询字符,有一个反斜杠字符,后跟一个 u 后跟数字。这就是为什么 .replace(/\\u0005/g, "") - 将它们一一匹配 - 起作用。

如果您想替换(并与字符类范围匹配)控制字符本身,则必须首先解析 JSON 转义序列:

var data = JSON.parse(message);
data.name1 = data.name1.replace(/[\x00-\x1F\x7F-\x9F]/g, '');
data.name2 = data.name2.replace(/[\x00-\x1F\x7F-\x9F]/g, '');

总的来说,我建议使用 reviver callback of the native JSON.parse method为此:

$.ajax(…).then(function(msg) {
return JSON.parse(msg, function(p, v) {
return typeof v == "string"
? v.replace(/[\x00-\x1F\x7F-\x9F]/g, '')
: v;
});
}).then(function(response) {
console.log(response);

});

关于javascript - 正则表达式 unicode 范围 [uXXXX] 未使用 ajax 识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com