Java:检查字符串是否只包含1,0或一个点

时间:2014-05-27 12:25:29

标签: java

我试图检查字符串是否仅包含

  • 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\\.]

是错误的,但我真的不知道如何指定它。 提前谢谢!

1 个答案:

答案 0 :(得分:5)

String.contains适用Strings NOT REGEX。使用String.matches  代替。正如@lazy指出的那样,你也可以使用Pattern和Matcher类。

test.contains("[^10\\.]") == true 

您在这里所做的只是检查测试是否包含字符串文字[^ 10 \。]