2013-08-09 27 views

Trả lời

12

Bạn có thể sử dụng InetAddressValidator lớp để kiểm tra và xác nhận thời tiết một chuỗi là một ip hợp lệ hay không.

import org.codehaus.groovy.grails.validation.routines.InetAddressValidator 

... 
String someIp = // some String 
if(InetAddressValidator.getInstance().isValidInet4Address(someIp)){ 
    println "Valid Ip" 
} else { 
    println "Invalid Ip" 
} 
... 

Hãy thử điều này ..,.

3

Regex sẽ thực hiện. Có những cái đơn giản và phức tạp hơn. Một trong những đơn giản là regex này:

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 

Sử dụng nó như thế này:

boolean isIP = someIP.maches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"); 

Nhưng điều này sẽ phù hợp với 999.999.999.999 là tốt, mà không phải là một địa chỉ IP hợp lệ. Có một regex rất lớn có sẵn trên regular-expressions.info:

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 

Điều này sẽ đảm nhiệm công việc chính xác. Nếu bạn sử dụng cái này, đừng quên thoát khỏi mỗi \ bằng một số khác \.


Nếu bạn không phải là fan hâm mộ của regexes lớn, bạn có thể sử dụng mã này:

public static boolean isIP(String str) 
{ 
    try 
    { 
     String[] parts = str.split("\\."); 
     if (parts.length != 4) return false; 
     for (int i = 0; i < 4; ++i) 
     { 
      int p = Integer.parseInt(parts[i]); 
      if (p > 255 || p < 0) return false; 
     } 
     return true; 
    } catch (Exception e) 
    { 
     return false; 
    } 
} 
+1

Đây là câu trả lời tốt hơn, và ông biết rõ REGEX trong java tốt hơn hơn tôi, đi với cái này. Tôi khá mới với thế giới của REGEX, và chưa sử dụng nó trong JAVA nhiều. – CamelopardalisRex

+0

Rất tốt. Ngoài ra, trong Groovy, bạn có thể sử dụng chuỗi '/ regex /', do đó không cần thoát, và sử dụng toán tử '== ~' để kiểm tra đối sánh regex – Will

1

Một cách hướng đối tượng:

String myIp ="192.168.43.32" 
myIp.isIp(); 

Được biết đến đó, bạn phải thêm video này vào BootStrap.groovy:

String.metaClass.isIp={ 
    if(org.codehaus.groovy.grails.validation.routines.InetAddressValidator.getInstance().isValidInet4Address(delegate)){ 
    return true; 
    } else { 
    return false; 
    } 


} 
Các vấn đề liên quan