内部ユーザーと外部ユーザーを区別するために、スクリプトレットタグ内でJava正規表現を使用しています。コードは、次のとおりです。
String ipAddress = request.getHeader("iv-remote-address");
String internalIPs =
"166.41.8.X" + "|" +"12.16.X.X" + "|" +"12.22.X.X" + "|" +"132.23.X.X" + "|";
Pattern p = Pattern.compile("^(?:"+internalIPs.replaceAll("X", "(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])")+")$");
Matcher m = p.matcher(ipAddress);
if (m.matches())
{
//print internal IP
} else{
//print external IP
}
入力が166.41.8.2の場合、入力が12.16.2.1または12.22.12.3の場合、IPアドレスは内部IPとして正しく識別され、IPアドレスは内部IPとして正しく識別されません。これは、2つの「X」との一致パターンに関係していると思います。誰かがパターンマッチングの問題を特定できますか?または、IPアドレスのパターンを照合する最良の方法をお勧めしますか?