从发送到 AWS/Amazon SQS 的邮件中删除无效字符

Remove invalid characters from message sent to AWS/Amazon SQS

上下文: Amazon SQS 对在参数中传递给 sqsClient.sendMessage(...) 的消息时它将接受的字符范围有限制。 (提到here)。

以上摘录link:

A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed:

#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF

Any characters not included in this list will be rejected.

问题: 现在,我们知道作为消息发送的消息 json 中存在违规字符,因此我们通过以下方式过滤掉它们 message_json.replaceAll("\uffff", ""); 这很好用。 (其中 '\uffff' 是 xFFFF/U+FFFF 字符的 java 表示)。

但是,我不想只对 xFFFF 字符执行此操作,而是想对上面提到的整个范围执行此操作 (#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF),但是我如何构建一个可以采用不带 [= 的字符范围的子句40=] 替换每一个?

其实答案就在眼前。出于某种原因,我假设正则表达式的字符 类 不会接受这些转义字符,例如 message_json.replaceAll("[\ufffd-\uffff]", " ");

中的 [\ufffd-\uffff]

这适用于我的情况。

我遇到了这个问题并使用了这个正则表达式

/([^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}])/u```