1

WebSocketを使ってJavaScriptゲームにチャット機能を実装しています。ユーザーが入力テキストフィールドに書いたASCII以外の文字を他の文字に置き換えたい。Ä は a に置き換えられ、Ö は o に置き換えられます。また、ASCII 以外の他のすべての文字は "" に置き換える必要があります。

var message = document.getElementById("write_message").value;
message = message.replace(/ä/g, "a").replace(/ö/g, "o");
message = message.replace(/^[\000-\177]/g, "");
ws.send("M" + message);

上記のコードのさらに単純なバージョンを試してみましたが、どういうわけかすべてのユーザー入力が置き換えられたようです。アスキー文字も。別の Stackoverflow の質問から正規表現を見つけました。

4

2 に答える 2

0

あなたのコードは正しいですが、否定を示すために^左角かっこの後にサーカムフレックスを付ける必要があります。[そうでなければ、それはまったく別のことを意味します。

ただし、実際には大文字のÄとÖを削除するのではなく、AとOにマップしたいと思います。これには、次を使用します

message = message.replace(/ä/g, "a")
                 .replace(/ö/g, "o")
                 .replace(/Ä/g, "A")
                 .replace(/Ö/g, "O")
                 .replace(/[^\000-\177]/g, "");
于 2013-04-17T18:03:49.097 に答える