我需要验证在TextEdit中输入的字符串是否是Web地址,例如。 “www.stackoverflow.com”或IP地址,例如。 “64.34.119.12”。我试过这两种方法没有成功。我有一个名为ip的私有类变量。
方法1:
public boolean isAdress(){
boolean isaddr = true;
try
{
ip = new NetTask().execute(""+textEdit1.getText()).get();
}
catch (Exception ex)
{
isaddr = false;
}
return isaddr;
}
方法2是我在将其发送到NetTask之前检查字符串。
public boolean isAdress(){
String adress = textEdit1.getText().toString();
boolean isaddr = true;
if (adress.length() > 0) {
String[] nums = adress.split(".");
if (nums.length == 4) {
for (String str : nums) {
int i = Integer.parseInt(str);
if ((i < 0) || (i > 255)) {
isaddr = false;
}
}
}
}
return isaddr;
}
这第二种方法也没有wotk,但即使这样做,它也无法验证网址。
所以我可以用任何方式验证这两种情况的字符串吗?
编辑: 在阅读了有关正则表达式之后,我也尝试了这种方法:
private String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
public boolean isAdress(){
String adress = textEdit1.getText().toString();
try {
Pattern patt = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = patt.matcher(adress);
return matcher.matches();
} catch (RuntimeException e) {
return false;
}
}
但它似乎一直都是假的。
答案 0 :(得分:5)
简短回答:尝试使用正则表达式!
编辑:
if(textEdit1.getText().matches(REGEX_URL)) {
//DO URL THINGS
}
if(textEdit1.getText().matches(REGEX_IPADDRES)) {
//DO IP THINGS
}
如果你谷歌,你可以找到IP地址和网址的正确REGEX字符串......
注意: 网址的正则表达式可能与您想要的不同,您是否只需要http:// https://或所有有效网址(如market://)......
答案 1 :(得分:2)
Patterns.IP_ADDRESS.matcher(URL).matches();
答案 2 :(得分:0)
在 Kotlin 中验证 IP 地址,返回 true 或 false
fun isValidIPAddress(ip:String):Boolean {
val reg0To255 = ("(\\d{1,2}|(0|1)\\" + "d{2}|2[0-4]\\d|25[0-5])").toRegex()
return reg0To255.matches(ip)
}
val inputIP = "127.1.1.775"
println("Input: " + inputIP)
println("Output: " + isValidIPAddress(inputIP))
输入:127.1.1.775 输出:假
答案 3 :(得分:-3)
如何更简单的方法?检测它是否是IP地址,例如
public static boolean isIP(String input) {
if (input.contains(".") && input.length()>1) {
return TextUtils.isDigitsOnly( input.replace(".", "").trim() );
}
else {
return false;
}
}