0

チャットで話しているプレイヤーをリッスンする Minecraft Bukkit サーバー用の単純な IP Regex があり、チャット メッセージに有効な IPv4 アドレスが含まれている場合は、それをサーバー IP に置き換えます。明らかに、その目的は、人々が入ってきてスパムを送信してサーバーに参加してから離れるのを防ぐことです. 今では単純な正規表現がうまく機能しますが、人々はすでにこれを考えていて、そうするでしょう

'Join my server! 127 . 0 . 0 . 1 !!!'

私の現在のコード、

@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerChat(PlayerChatEvent event) {
    String msg = event.getMessage();
    String ipRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
    String ipfixed = msg.replaceAll(ipRegex, "mc.blockie.net");
    event.setMessage(ipfixed);
}

ほんの数分間のブレインストーミングで、チャット文字列からすべてのスペースを削除して正規表現チェックを行うという方法しか思いつきませんでしたが、送信されたすべてのチャット メッセージに正直なところ、私が試した限りです。

4

2 に答える 2

1

途中にいくつかのオプションのスペースを追加できます。

String ipRegex = "\\d{1,3}(?:\\s*\\.\\s*\\d{1,3}){3}";

私はネットワーキングに関しては詳しくありませんが、彼らも のようなものを使用してこれをバイパスしているよう127-0-0-1ですよね?

于 2013-08-10T05:53:23.980 に答える
1

次の正規表現を試してください。

"(\\d{1,3}\\s*\\.\\s*){3}\\d{1,3}"

\\s*オプションのスペースに一致させるために使用されます。

于 2013-08-10T05:49:07.013 に答える