1. ホーム
  2. javascript

[解決済み] JavaScript の文字列からゼロ幅の空白文字を削除する

2023-08-14 22:33:31

質問

ユーザーからの入力(JSコード)をリアルタイムに実行(処理)し、何らかの出力を表示したい。

時々、コードに全角のスペースが入っていて、本当に気持ち悪いです。ユーザーがどうやって入力しているのかわからない。例として "(​$".length === 3

JSのコードからその文字を削除できるようにする必要があります。または、ブラウザがゼロ幅のスペース文字を考慮しないように、そのJSコードを実行する他の方法があるのでしょうか?

どのように解決するのですか?

Unicodeには以下のようなゼロ幅の文字があります。

  • U+200B ゼロ幅スペース
  • U+200C ゼロ幅非ジョイナー Unicode コードポイント
  • U+200D ゼロ幅ジョイナー Unicode コードポイント
  • U+FEFF ゼロ幅ノーブレイクスペース Unicode コードポイント

JavaScriptで文字列からこれらを取り除くには、簡単な正規表現を使用します。

var userInput = 'a\u200Bb\u200Cc\u200Dd\uFEFFe';
console.log(userInput.length); // 9
var result = userInput.replace(/[\u200B-\u200D\uFEFF]/g, '');
console.log(result.length); // 5

このほかにも、表示されない記号がたくさんあることに注意してください。いくつかの ASCIIの制御文字 は、例えば