用java语言 截取字符串中的Ip地址,并判断是不是合法,请问怎么做? 例“ip addess 192.160.2.3” 判断合法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java语言 截取字符串中的Ip地址,并判断是不是合法,请问怎么做? 例“ip addess 192.160.2.3” 判断合法相关的知识,希望对你有一定的参考价值。
2步做,先用正则判断格式,比如"ip address (\\d1,3\\.)3\\d1,3" (Java正则)得到ip数值后,再用if 判断各位数字是否在0-255之间
if(d>=0 && d<=255) print 合法;
else print 不合法;追问
字符串是任意字符串,而且我期望能得到代码,你这说的基本等于没说
追答因为在多次回答过一样的题也给出过代码,所以没直接重写
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test
static public void main(String args[])
String t="百度知道 > 电脑/网络 > 程序设计 > JAVA相关\n用java语言 截取字符串中的Ip地址,并判断是否合法,请问怎么做?ip address 192.160.2.256 例“ip address 192.160.2.3” 判断合法检举 | 2012-5-26 15:23 提问者: guxinjushi | 悬赏分:20 | 浏览次数:47次\n回答 共3条\n2012-5-28 14:58 ip address 192.160.2.4imkow | 十三级ip address 192.160.2.5";
Matcher m=Pattern.compile("ip address ((\\d1,3)\\.(\\d1,3)\\.(\\d1,3)\\.(\\d1,3))").matcher(t);
while(m.find())
System.out.print("找到:"+m.group(1));
boolean valid=true;
for(int i=2;i=255)
valid=false; break;
System.out.println(" =>"+(valid?"合法":"不合"));
==
找到:192.160.2.256 =>不合
找到:192.160.2.3 =>合法
找到:192.160.2.4 =>合法
找到:192.160.2.5 =>合法
====
你的例子address 错拼写成'addess',例子按正确address严格搜索的。
public class T
public static void main(String as[])
String id = JOptionPane.showInputDialog(null, "Please input IP: ");
int add = id.length();
String test = new String();
boolean b1 = false;
boolean b2 = false;
boolean b3 = false;
boolean b4 = false;
int found = 1;
if (id.charAt(0) == '.' || id.charAt(add - 1) == '.' || add > 15
|| id.split(".").length != 4)
JOptionPane.showMessageDialog(null, "IPAddress is error ");
else
for (int i = 0; i < add; i++)
if (String.valueOf(id.charAt(i)).equals("."))
// JOptionPane.showMessageDialog(null,String.valueOf(i));
int testadd = Integer.parseInt(test);
if (found == 1)
if (testadd > 0 && testadd < 255)
b1 = true;
if (found == 2)
if (testadd >= 0 && testadd < 255)
b2 = true;
if (found == 3)
if (testadd >= 0 && testadd < 255)
b3 = true;
test = new String();
found++;
else
test = test + String.valueOf(id.charAt(i));
if (i == (add - 1))
int testadd = Integer.parseInt(test);
if (testadd >= 0 && testadd < 255)
b4 = true;
if (b1 && b2 && b3 && b4)
JOptionPane.showMessageDialog(null, "IPAddress is exactly! ");
else
JOptionPane.showMessageDialog(null, "IPAddress is error ");
参考技术B 大体如下
-----------------------------------------------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class demo
public static void main(String[] args)
String pattern = "(\\d1,3\\.)3\\d1,3";
String str = "ip addess 192.160.2.3";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
String result = null;
while (m.find())
result = m.group();
if (!"".equals(result))
break;
System.out.println(result);
boolean isOK = true;
String[] array = result.split("\\.");
for (int i = 0; i < array.length; i++)
int ip = Integer.parseInt(array[i]);
if (!(0 <= ip && ip <= 255))
isOK = false;
break;
if (isOK)
System.out.println("OK");
else
System.out.println("NG");
参考技术C 楼上正解
java编写正则表达式,判断给定的是不是是一个合法的IP地址
正则表达式匹配ip地址,实际上就是分别判断每个点直接的数字是否符合规范。\x0d\x0apackage com;\x0d\x0a import java.util.regex.Matcher;\x0d\x0a import java.util.regex.Pattern; \x0d\x0a public class TestRegex \x0d\x0a public static boolean isboolIP(String ipAddress) \x0d\x0a String ip="(2[5][0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)"; \x0d\x0a Pattern pattern = Pattern.compile(ip); \x0d\x0a Matcher matcher = pattern.matcher(ipAddress); \x0d\x0a return matcher.matches();\x0d\x0a \x0d\x0a /** * @param args \x0d\x0a */ \x0d\x0a public static void main(String[] args) \x0d\x0a // TODO Auto-generated method stub \x0d\x0a String ipAddress1 = "10."; \x0d\x0a String ipAddress2 = "0.0.0.0"; \x0d\x0a String ipAddress3 = "255.255.255.255";\x0d\x0a String ipAddress4 = "192.168.2.1";\x0d\x0a String ipAddress5 = "26445687";\x0d\x0a String ipAddress6 = "nihao"; \x0d\x0a String ipAddress7 = "你好!!"; \x0d\x0a if(isboolIP(ipAddress1)) \x0d\x0a System.out.println("IP正确"); \x0d\x0a else \x0d\x0a System.out.println("IP错误"); \x0d\x0a if(isboolIP(ipAddress2)) \x0d\x0a System.out.println("IP正确"); else \x0d\x0a System.out.println("IP错误"); \x0d\x0a if(isboolIP(ipAddress3)) \x0d\x0a System.out.println("IP正确"); else \x0d\x0a System.out.println("IP错误"); \x0d\x0a \x0d\x0a if(isboolIP(ipAddress4)) \x0d\x0a System.out.println("IP正确"); else \x0d\x0a System.out.println("IP错误"); 参考技术A 正则表达式匹配ip地址,实际上就是分别判断每个点直接的数字是否符合规范。package com;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegex
public static boolean isboolIP(String ipAddress)
String ip="(2[5][0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)\\.(25[0-5]|2[0-4]\\d|1\\d2|\\d1,2)";
Pattern pattern = Pattern.compile(ip);
Matcher matcher = pattern.matcher(ipAddress);
return matcher.matches();
/** * @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
String ipAddress1 = "10.";
String ipAddress2 = "0.0.0.0";
String ipAddress3 = "255.255.255.255";
String ipAddress4 = "192.168.2.1";
String ipAddress5 = "26445687";
String ipAddress6 = "nihao";
String ipAddress7 = "你好!!";
if(isboolIP(ipAddress1))
System.out.println("IP正确");
else
System.out.println("IP错误");
if(isboolIP(ipAddress2))
System.out.println("IP正确"); else
System.out.println("IP错误");
if(isboolIP(ipAddress3))
System.out.println("IP正确"); else
System.out.println("IP错误");
if(isboolIP(ipAddress4))
System.out.println("IP正确"); else
System.out.println("IP错误"); 参考技术B ^[\d]1,3.1[\d]1,3.1[\d]1,3.1[\d]1,3$
你没有具体的详细写IP规则,但是这样应该能满足
三个小数点,小数点前后最多三位数,最少一位,如果有需求可联系我
以上是关于用java语言 截取字符串中的Ip地址,并判断是不是合法,请问怎么做? 例“ip addess 192.160.2.3” 判断合法的主要内容,如果未能解决你的问题,请参考以下文章