我试图检查字符串是否仅包含
1
0
或这三者的组合。
首先我有这个代码:
public static boolean controleSubnetmask(String mask) {
try {
String[] maskArray = mask.split(".");
int[] subnetmask = new int[4];
//array of string to array of int
for (int i = 0; i < maskArray.length; i++) {
subnetmask[i] = Integer.parseInt(maskArray[i]);
}
return true;
} catch (NumberFormatException e) {
return false;
}
}
但它的功能相当复杂,并且它不会检查是否只输入1和0。 所以现在我有了这个,但似乎我误解了正则表达式,因为它不起作用:
public static void controleSubnetmask(String mask) {
mask = "1100.110...11";
String test = "p";
if (mask.contains("[^10\\.]") == true) {
System.out.println("wrong input");
}
if (test.contains("[^10\\.]") == true) {
System.out.println("wrong input");
}
}
我期待错误的输入&#39;测试字符串上的消息,没有出现。所以我相信我的正则表达式:
[^01\\.]
是错误的,但我真的不知道如何指定它。 提前谢谢!
答案 0 :(得分:5)
String.contains
适用Strings
NOT REGEX
。使用String.matches
代替。正如@lazy指出的那样,你也可以使用Pattern和Matcher类。
test.contains("[^10\\.]") == true
您在这里所做的只是检查测试是否包含字符串文字[^ 10 \。]