入力文字列を指定すると、すべての無効なシーケンスが削除されるか、U+FFFD に置き換えられる出力文字列が生成されます。
ステート マシンの char-by-char または非ネイティブな node.JS モジュールを実装するよりも良い方法はありますか?
無効なシーケンスは、たとえば、孤立したサロゲート"\uD800"
、またはその他の無効な複数文字シーケンスです。
入力文字列を指定すると、すべての無効なシーケンスが削除されるか、U+FFFD に置き換えられる出力文字列が生成されます。
ステート マシンの char-by-char または非ネイティブな 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';
});
XRegExpライブラリとそのUnicode アドオンを使用する場合は、 の代わりに\p{Cs}
または\p{Surrogate}
Unicode カテゴリを使用できます[\ud800-\udfff]
。\p{Noncharacter_Code_Point}
XRegExp を使用すると、 、\p{Co}
または\p{Private_Use}
、\p{Cn}
またはなど、関連する可能性のある他の Unicode プロパティにも簡単にアクセスできます\p{Unassigned}
。
Node.js を使用しているため、npm を使用して XRegExp をインストールnpm install xregexp
できます。XRegExp の npm モジュールには、Unicode アドオンが自動的に含まれます。