簡體   English   中英

IP 模式檢查的正則表達式在 Java 中返回 false

[英]Regex for IP Pattern Check is returning false in Java

我一直在嘗試檢查 Json 中是否存在 IP 模式或不使用 Java。 但是模式匹配器返回錯誤。 下面是我的代碼片段

String responseJsonData = "{\"ip\":127.0.0.1}";
or
String responseJsonData = "{\"127.0.0.1\":201}";

String ipPattern = "\\d+\\.\\d+\\.\\d+\\.\\d+";
boolean ipPatternRegex = rgxptrn.compileRegexPatternWithMatcher(ipPattern, responseJsonData);
System.out.println(ipPatternRegex);
Assert.assertFalse(ipPatternRegex, "JSON String Contains IP Patterns");
        
        Pattern pattern = Pattern.compile(regexPattern);
        Matcher match = pattern.matcher(jsonString);
        System.out.println("Pattern Result is : " + match.matches());
        return match.matches();
    }

responseDataInput 中的任何一個都返回 false。 如何使用正則表達式強制搜索 IP 模式匹配。

你的模式是正確的。 問題是您使用的是Matcher#matches而不是Matcher#find

演示:

import java.util.regex.Pattern;
import java.util.stream.Stream;

public class EntryPoint {

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
        
        Stream.of(
                    "{\"ip\":127.0.0.1}",
                    "{\"127.0.0.1\":201}",
                    "{\"127.a.0.1\":201}"
                ).forEach(s -> System.out.println(s + " => " + pattern.matcher(s).find()));
    }   
}

Output:

{"ip":127.0.0.1} => true
{"127.0.0.1":201} => true
{"127.a.0.1":201} => false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM