1

私は周りを検索しましたが、うまくいくものは見つかりませんでした。テキストに IP アドレスが含まれているかどうかを確認するにはどうすればよいですか? 私はこれを試しましたが、うまくいきません:

    public boolean ip(String a_text) {
    String ip_filter = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
    if (a_text.toLowerCase().contains(ip_filter.toLowerCase())){
        return true;
    }
    return false;
}
4

3 に答える 3

12

メソッドで正規表現を使用しようとしていますcontains。そして、そのメソッドは引数として正規表現を受け取りません。プレーンな文字列を受け取ります。PatternMatcherを試してみてください。

次に例を示します。

public static boolean ip(String text) {
    Pattern p = Pattern.compile("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
    Matcher m = p.matcher(text);
    return m.find();
}

編集:パターンをより適切なものに更新しました。ここにあります。

于 2013-03-28T18:58:38.610 に答える
1

はい、match を使用してください。過去に使用したより優れた正規表現は次のとおりです。

((0|1[0-9]{0,2}|2[0-9]?|2[0-4][0-9]|25[0-5]|[3-9][0-9]?)\.){3}(0|1[0-9]{0,2}|2[0-9]?|2[0-4][0-9]|25[0-5]|[3-9][0-9]?)

RegExLibから

于 2013-03-28T19:01:33.897 に答える
0

You can do a lot of things with Regex. But Why should you!? You already have good and tested libraries, like Guava

boolean isValid = InetAddresses.isInetAddress("1.2.3.4");

Appache Validator

 isValidInet4Address(String)

And so on (see this post)

于 2013-03-28T19:30:10.493 に答える