给定一个输入字符串,生成一个输出字符串,其中所有无效序列都被删除或替换为 U+FFFD。
有没有比逐个字符地实现状态机或可用的非本机 node.JS 模块更好的方法?
例如,无效序列是孤立的代理"\uD800"
,或其他无效的多字符序列。
给定一个输入字符串,生成一个输出字符串,其中所有无效序列都被删除或替换为 U+FFFD。
有没有比逐个字符地实现状态机或可用的非本机 node.JS 模块更好的方法?
例如,无效序列是孤立的代理"\uD800"
,或其他无效的多字符序列。
匹配无效序列所需的正则表达式取决于您要包含的内容。要使用 U+FFFD 替换孤立代理,您可以使用如下内容:
var surrogates = /[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
str = str.replace(surrogates , function ($0) {
return $0.length > 1 ? $0 : '\ufffd';
});
如果您使用带有Unicode 插件的XRegExp库,您可以使用或Unicode 类别而不是. 使用 XRegExp 还可以让您轻松访问其他可能相关的 Unicode 属性,例如, or , and or 。\p{Cs}
\p{Surrogate}
[\ud800-\udfff]
\p{Noncharacter_Code_Point}
\p{Co}
\p{Private_Use}
\p{Cn}
\p{Unassigned}
由于您使用的是 Node.js,因此您可以通过npm使用npm install xregexp
. XRegExp 的 npm 模块自动包含 Unicode 插件。