Từ một String đưa ra:Làm cách nào để kiểm tra xem chuỗi là một IP trong Groovy?
String someIp = // some String
Làm thế nào tôi có thể kiểm tra, nếu someIp là một định dạng Ip hợp lệ?
Từ một String đưa ra:Làm cách nào để kiểm tra xem chuỗi là một IP trong Groovy?
String someIp = // some String
Làm thế nào tôi có thể kiểm tra, nếu someIp là một định dạng Ip hợp lệ?
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 ..,.
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;
}
}
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;
}
}
Đâ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
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