[英]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.