用于检查给定输入是数字还是单词或日期的java验证代码?

时间:2013-12-17 06:27:49

标签: java spring-mvc

我有一个下拉菜单旁边的文本框,如果在下拉列表中选择了第二个或第三个元素,则该下拉列表旁边的文本框应该只接受数字或单词或日期,不允许使用特殊字符。任何人都可以为此提供服务器端java代码验证吗?

if(badRowDetails.getOperator()==2 || badRowDetails.getOperator ()==3)            
{
     char c[]=value.toCharArray ();
     int count=0;
     int count1=0;
     for(int i=0;i<value.length ();i++)
     {
         int ascii=(int)c[i];
         if((ascii >=97 && ascii<=122) || (ascii>=65 && ascii<=90))
         {   
             count=count+1;
         }
     }
     try
     {
        int num=Integer.parseInt(value);               
     }
     catch(NumberFormatException nfe)
     {                
         System.out.println ("Exception raised .  "+nfe.getMessage ());
         count1=count+1;
     }            
     if(count==0 && count1>0)
     {
         errors.reject ("value","Operator IS , ISN'T can only have words,Numbers.");
     }           

    }
}

谢谢

4 个答案:

答案 0 :(得分:1)

public static void main(String... args) {

 String s = "12:12:1990";
 System.out.println(s.matches("(\\d+|\\w+|([0-2][0-9]|([3]([0]|[1]))):([0][1-9]|[1][1-2]):([1][9][0-9][0-9]|[2][0][0-9][0-9]))"));

}

PS:日期具有分隔符“:”(假设),范围介于(1900和2099)之间。您可以将代码中的分隔符替换为“:”,将其更改为所需的分隔符。不处理LEAP YEAR条件......

IP:Hello OP : true 
IP :123 OP : true  
IP :12:12:2011  Op :true 
IP: 12:44:2012 OP :false
IP :][ OP :false
IP : 32:12:2013 OP : false

答案 1 :(得分:0)

如果字符串是字母数字,则使用如下所示的正则表达式将返回true:

Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$");
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
  return true; 
} 
return false; 

日期更加艰难。我会查找正则表达式来验证日期。

答案 2 :(得分:0)

使用正则表达式如下:

    if(badRowDetails.getOperator()==2 || badRowDetails.getOperator ()==3)            
    {
        if(!value.matches("[A-Za-z0-9-]*")) {
            errors.reject ("value","Operator IS , ISN'T can only have words,Numbers.");
        }
    }

答案 3 :(得分:0)

对于Alpha Numeric,我更倾向于使用正则表达式进行验证,使用DateFormatter来检查日期(因为它需要大量的验证,例如闰年,月份,日期,年份等)

这里你快速举例说明我是怎么做的,     public static void main(String [] args){

    String s1="111";
    String s11 ="11aa*";
    String s2="hello";
    String s3="2013-05-11";

    System.out.println("Is number 111  "+isAlphaNum(s1));
    System.out.println("Is number 11aa* "+isAlphaNum(s11));
    System.out.println("Is word hello "+isAlphaNum(s2));

    System.out.println("Is date 2013-05-11 "+isaDate(s3));
    System.out.println("Is date 111 "+isaDate(s1));
    System.out.println("Is date hello "+isaDate(s2));

}

private static boolean isAlphaNum(String word){
    return word.matches("^[a-zA-Z0-9]*$");
}

private static boolean isaDate(String text){
    if (text == null || !text.matches("\\d{4}-[01]\\d-[0-3]\\d")){
        return false;
    }
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    df.setLenient(false);
    try {
        df.parse(text);
        return true;
    } catch (ParseException ex) {
        return false;
    }
}

您可以根据需要更改日期格式globaly(动态)