用于验证用户输入的正则表达式

时间:2013-03-08 20:07:34

标签: java regex

我编写了一个Java程序,尝试从int[]这样的字符串中获取1,2,5,2,11

但首先我需要判断用户是否选择了正确的格式,例如“,”+数字。如何将其写为Java正则表达式?

//set the default value of int[] a;
        int[] a  = {2,3,1,-2,2,7};  
        //set the UI;
        String text = JOptionPane.showInputDialog("please enter the array to be checked: ");
        String[] strs = text.split(",");
        System.out.println(strs);
        System.out.println(strs.length);
        int[] a2 = new int[strs.length];
        for(int i = 0; i < strs.length; i++){
            a2[i] = Integer.parseInt(strs[i]);
        }

嘿伙计们,抱歉没有第一次说清楚,我希望用户输入“,”+任何正数或负数的格式,并且可以容忍空间,就像 “1,-2,1,3,+ 55”

2 个答案:

答案 0 :(得分:5)

您根本不需要正则表达式,仅String#split(",")Integer#parseInt()

无论如何,单凭正则表达不足以将字符串转换为数字。

答案 1 :(得分:3)

要验证您的输入,您可以使用类似

的内容
if (text.matches("-?\\d+(,\\s?-?\\d+)*")){
    //try to split
}else{
    //inform user about wrong data format
}
  • -?表示减号是可选的
  • \\d+表示一个或多个数字,
  • ,\\s?-?\\d+表示“逗号”,“空格”(一个或没有),“减号”(一个或没有),“数字”(一个或多个),
  • (,\\s?-?\\d+)*表示此结构可以出现零次或多次。